1. ホーム
  2. 記事一覧
  3. Gitの作業効率化!git stash と git diff の使い方を解説

2025.09.29

Gitの作業効率化!git stash と git diff の使い方を解説

はじめに

Gitでの開発作業において、「変更内容の確認」や「作業途中の変更を一時的に退避する」操作は日常的に必要となります。

そんな場面で活躍するのが、変更確認に必要な git statusgit diff と、変更を一時保存できる git stash の3つのコマンドです。

これらのコマンドを学ぶことで、状況に応じた適切な変更内容の確認と、スムーズな作業の中断・再開が可能になります。本記事では、初心者の方にも分かりやすく、実践的な使いかたをやさしく解説していきます。

Gitについての基本

Gitは、ファイルの変更履歴を管理するバージョン管理ツールです。個人の作業でもチーム開発でも、「誰が・いつ・何を」変更したのかを記録でき、安心して作業が進められます。

Gitの基本をさらに知りたい方は、以下の記事も参考にしてください。

▼Gitを基礎から学びたい方はこちら

【初心者向け】GitHubとは?必須知識と使い方について解説!

https://envader.plus/article/68

▼Gitコマンド早見表はこちら

必見!現場で役立つGitコマンド29選をまとめて紹介!

https://envader.plus/article/402

▼「エンベーダー」ではGitの基本コマンドを実践で学べます。

エンベーダー公式サイト - Gitの使い方コース

https://envader.plus/course/5/scenario/1055

Gitでよく使うコマンド:status・diff・stash

Git操作に少し慣れてくると、変更内容の確認や作業の一時退避に役立つ git statusgit diffgit stash を使う機会が増えてきます。これらは作業を安全かつ効率的に進めるための基本コマンドでもあります。

3つのコマンドは以下の場面で使用します。

  • git status:変更されたファイルの有無やステージング状況の確認
  • git diff:ファイルの中でどの行が変更されたかの確認
  • git stash:進行中の変更内容の一時退避

この3つを組み合わせると、例えば次のような流れで作業を整理できます。

  1. git status で「変更があるか」を把握
  2. git diff で「どこが変わったか」を詳細に確認
  3. 必要に応じて git stash で変更内容を退避

次のセクションで、それぞれのコマンドを詳しく見ていきましょう。

git status とは

git status は、現在のリポジトリでどのファイルが変更され、どの状態にあるのかを一覧で確認できるコマンドです。コミット前に状況を整理するのに欠かせません。

git status の使い方

git status の基本コマンドです。実行すると変更状況を一覧で確認できます。

git status

コマンド実行例

git status の実行例です。

$ git status
On branch main

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   README.md

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   README.md

この例では、README.md が新規ファイルとしてステージされていますが、その後さらに編集されたため「未ステージの変更」としても表示されています。

modified は修正済みで、まだ add されていない変更を意味します。

git diff とは

git diff は、ファイルのどの部分が変更されたのかを確認するコマンドです。git status が「変更のあるファイル」を一覧するのに対し、git diff は「具体的に何行目がどう変わったのか」を表示します。

git diff の使い方

git diff の基本コマンドです。実行すると、まだステージされていない変更内容を確認できます。

git diff

コマンド実行例

次の例では、新しく作成された README.md ファイルの差分を確認しています。

$ git diff
diff --git a/README.md b/README.md
index e69de29..4169e1c 100644
--- a/README.md
+++ b/README.md
@@ -0,0 +1 @@
+This is a README file.

この出力から、README.md ファイルに This is a README file. という1行が追加されたことがわかります。

git stash とは

git stash は、作業中の変更を一時的に退避するコマンドです。コミットせずにワークツリーを保存してクリーンな状態に戻し、必要に応じて後から復元できます。

git stash の使い方

git stash はオプションなしでも使えますが、状況に応じて次のように使い分けると便利です。

git stash              # 変更を一時退避
git stash push -m "メッセージ" # メッセージ付きで変更を保存
git stash list         # 退避した内容の一覧を確認
git stash apply        # 直前のstashを復元
git stash drop         # 指定したstashを削除

コマンド実行例

以下の例では、作業中の変更をWIP: テキストの追加 という名前で保存されます。

$ git stash push -m "WIP: テキストの追加"
Saved working directory and index state On main: WIP: テキストの追加

※WIPは Work in Progress の略で、日本語では「作業中」という意味です。Gitでは作業中の変更を一時的に保存する際に、WIPというメッセージが慣習的によく使われます。

▼stashについては以下の記事で詳しく解説しています。

git stashとは?基本の使い方から活用方法、注意点まで徹底解説

https://envader.plus/article/344


3つのコマンドの基本を理解したところで、次は特に利用頻度が高い git diff をさらに活用する方法を見ていきましょう。

git diff をさらに活用する

git diff は基本的な使い方だけでなく、オプションを組み合わせることで状況に応じた差分確認ができます。ここでは、実務で役立つ使い分けを整理します。

差分確認のバリエーション

  • 未ステージの変更を確認

    編集したファイルのうち、まだステージされていない差分を表示します。基本の使い方として最初に覚えておくと便利です。

    git diff
  • ステージ済みの変更を確認

    インデックスに追加済みの変更を表示します。

    git diff --staged

    --cached も同じ意味を持つオプションとして利用できます。

  • 特定ファイルの差分を確認

    指定したファイルだけの変更点を表示します。

    git diff ファイル名
  • ブランチ間の差分を確認

    2つのブランチ間の変更点を比較します。レビュー前の確認に便利です。

    git diff main..feature
  • 空白やインデントの変更を無視して確認

    「空白変更で差分が多く見えて困る」といった場面で役立ちます。

    git diff -w

git diff 変更内容の確認方法

git diff の出力には特殊な記号やハンク情報(変更範囲を示す情報)が含まれており、これを理解することで差分を正確に把握できます。

$ git diff
diff --git a/README.md b/README.md
index e69de29..4169e1c 100644
--- a/README.md
+++ b/README.md
@@ -0,0 +1 @@
+This is a README file.

出力内容の見方

出力内容意味
diff --git a/README.md b/README.mda/ が変更前、b/ が変更後のファイルを表す
index e69de29..4169e1c 100644変更前後のハッシュ値とファイルモードを示す(100644は通常のテキストファイル)
--- a/README.md / +++ b/README.md変更前と変更後のファイルを示す
@@ -0,0 +1 @@ハンク情報を示し、変更前は行が存在せず(-0,0)、変更後に1行追加された(+1)ことを意味する
+This is a README file.+ は追加行を意味し、削除行の場合は - で表示される

補足

Windows環境では、以下のように改行コードに関する警告が出る場合があります。これはOSごとの改行コードの違い(LinuxはLF、WindowsはCRLF)によるものです。Gitが自動で変換するため、内容や差分の確認には影響ありません。

warning: in the working copy of 'README.md', LF will be replaced by CRLF the next time Git touches it

git diff の終了方法

git diff の実行時にページャが起動した場合、q キーを押すと通常のターミナルに戻れます。

git diff を実行すると、差分が多い場合に自動的にページャ(less という閲覧ツール)が起動することがあります。このとき画面がスクロール状態になり、抜け方が分からず戸惑うことがありますが、q キーで終了できることを覚えておけば安心です。

ページャの操作方法

操作キー動作内容
q終了
スペース次のページへ進む
b前のページへ戻る
j / k1行ずつ移動
/検索語差分内の文字列検索

ここまで git diff の活用方法を整理しました。次は git stash に進み、退避した変更内容を一覧や差分として確認する方法を見ていきます。

git stash の内容を確認する

git stash で退避した変更は、あとから一覧や差分を確認できます。退避した内容を把握できると、「どの作業を保存したのか分からなくなった」といった混乱を防げます。

stash の一覧を確認

保存した stash は git stash list で一覧表示できます。

$ git stash list
stash@{0}: On main: WIP: テキストの追加

stash の差分を確認

特定の stash の中身は git stash show で確認できます。

$ git stash show stash@{0}
 README.md | 1 +
 1 file changed, 1 insertion(+)

さらに詳細な差分を見たいときは -p を付けます。

$ git stash show -p stash@{0}
diff --git a/README.md b/README.md
index e69de29..7a280cf 100644
--- a/README.md
+++ b/README.md
@@ -0,0 +1 @@
+This is a README file.
\ No newline at end of file

git stash show -p の出力は git diff と同じフォーマットで表示されるため、見方は共通です。

この記事で学んだこと

この記事では、変更確認や作業管理に欠かせない Git コマンドを取り上げ、それぞれの使い方や活用方法を学びました。最後に、学んだポイントを簡単に振り返ってみましょう。

  • git status:変更されたファイルの有無やステージング状況を確認
  • git diff:ファイル内でどの行が変更されたかを確認
  • git stash:作業中の変更内容を一時的に退避し、必要に応じて差分を確認

git diff では、オプションを使い状況に応じた差分確認や、出力の読みかた、終了方法を理解することで、より柔軟に変更内容を把握できるようになります。さらに、git stash では一覧表示や差分の詳細確認を学ぶことで、作業の中断と再開をスムーズに行えるようになり、Gitを一段と使いこなせるようになります。

Git にはほかにも便利なコマンドや活用方法が数多くあります。今回の内容を押さえたら、ぜひ次はブランチ操作やコミット管理にも挑戦してみてください。日々の作業がさらに整理され、バージョン管理の理解が広がっていきます。

Gitの使い方を学ぶ:おすすめの学習方法

「Gitの操作、まだちょっと不安かも…」そんな方におすすめなのが、「エンベーダー」です。 Gitの基本コマンドをはじめ、エンジニアに欠かせないLinuxの知識や操作をブラウザ上で気軽に学べる学習サービスです。

環境構築は不要。わずか5秒で学習環境が起動し、実際にコマンドを入力しながら学べるので、ゲーム感覚で楽しくスキルを習得できます

エンベーダー公式サイト - Gitの使い方コース

https://envader.plus/course/5/scenario/1055

Gitだけでなく、Linuxやデータベース操作など、今後のキャリアに活かせる学習コースも豊富に用意されています。

エンベーダーの学習コース一覧

https://envader.plus/course

いくつかのコースは無料で体験できるため、「コマンドに慣れたい」「楽しくGitを身につけたい」という方は、ぜひ一度エンベーダーを試してみてください。

参考資料

以下のリンクは、この記事で解説した手順や概念に関連する参考資料です。より詳しく学びたい方は、ぜひご覧ください。

【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

IT未経験者必見 USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。

「フリーランスエンジニア」

近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。

「成功する人とそうでない人の違いは何か?」

私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。

比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。

多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、

note記事3000いいね超えの殿堂記事 LINE登録で記事を見る

エンベーダー編集部

エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。

RareTECH 無料体験授業開催中! オンラインにて実施中! Top10%のエンジニアになる秘訣を伝授します! RareTECH講師への質疑応答可

関連記事

2024.02.07

AWSでLogstashの環境構築と使い方を学ぶ

Logstashという強力なツールを用いて、効果的なログ収集、加工、および可視化の方法を学びます。AWS上でのLogstashの設定から、基本的な使い方まで、実践的な知識を提供することを目指しています。

  • インフラエンジニア
  • AWS

2024.05.27

Gitコマンドでバグが混入したコミットを見つける!便利な「git bisect」コマンドを徹底解説

バグの原因となったコミットが何なのか最速で知りたい!という方向けに、この記事では「git bisect」コマンドについて解説します。

  • git

2025.03.18

どちらを選ぶ?クラウドとオンプレミスのメリット・デメリット、違いを比較

クラウドとオンプレミス、それぞれどのようなケースで利用するのかについて解説します。

  • インフラエンジニア

2025.04.17

Git Bashを簡単導入!WindowsにLinuxライクな環境の構築方法

Git Bashは、Git for Windowsをインストールするだけで導入できるターミナル環境で、Linuxと同じコマンドをWindows上でも簡単に使えるようになります。本記事では、Windowsユーザーを対象に、Git Bashの導入方法から作業効率を高めるエイリアスの設定方法までを解説します。これを機に、Windows上でもLinuxコマンドを自在に扱い、より快適な開発環境を手に入れましょう。

  • git
  • Linux