git diffで変更差分を見てみる

git diffとは

  • 作業ツリーに行われた変更を表示するもの
  • 「どこを変更したんだっけ?」を確認したい時に使う

リポジトリの構成とファイルの中身

以下のような構成、中身になっているとして話をしていきます。(この状態がリポジトリの最新の状態とします)

hogeディレクトリ
├ .git
├ hello.txt
└ hey.txt

hello.txtの中身は以下の通りです。

hello

hey.txtの中身は以下の通りです。

hey

変更を加える

上の状態からローカルで以下の変更を加えます。

まず、hello.txtの中身を以下のように変えます。(改行し、worldという文字を追加します)

hello
world

hey.txtは以下のように変えます(改行せず、後ろに Siriという文字を追加します)

hey Siri

そして、git addhey.txtのみをインデックスに追加します。

git add hey.txt

これで作業は終わりです。git statusで状況を見ると以下のようになっているかと思います

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   hey.txt

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:   hello.txt

git diff で状況を確認してみる

git diff

この状態で git diffをするとどうなるか、見てみましょう

diff --git a/hello.txt b/hello.txt
index b6fc4c6..9db7df0 100644
--- a/hello.txt
+++ b/hello.txt
@@ -1 +1,2 @@
-hello
\ No newline at end of file
+hello
+world
\ No newline at end of file

hello.txtのみが表示されました。

git diffと何もオプションをつけずに実行した場合、インデックスに登録していない(git addをしていない)ファイルの変更差分を見ます。

git diff --cached

次に、git diff --cachedをしてみます。出力は以下のようになります。

diff --git a/hey.txt b/hey.txt
index 2b31011..551860c 100644
--- a/hey.txt
+++ b/hey.txt
@@ -1 +1 @@
-hey
\ No newline at end of file
+hey Siri
\ No newline at end of file

--cachedというオプションをつけると、今度はインデックスに登録されている(git addをした)ファイルの変更差分を見る事ができます。

おわりに

  • 簡単ですが、git diffで変更差分を見てみました。
  • git diffだけだとインデックスに登録されたファイルは表示されないので注意してください