こちらの記事では、Gitで変更差分を確認することができる、git diffコマンドについて詳しく解説しています。
Gitの学習におすすめ参考書
改訂2版 わかばちゃんと学ぶ Git使い方入門
綺麗なコードが書けるようになる!
リーダブルコード-より良いコードを書くためのシンプルで実践的なテクニック
git diffコマンドの使い方
git diffとは、変更差分を確認することができるコマンドで、diffとはDifference(差分)を省略したものになります。
git diffコマンドでは、「ワークツリーとステージの差分」「ステージとリポジトリの差分」「特定のファイルとの差分」の3つを確認することができます。
まず最初にワークツリーとステージの差分を確認する方法は以下の通りです。git diff
git diff --staged
git diff ファイル名
何もない状態で、git diffコマンドを実行した場合は何も表示されません。
git diffコマンド実行時に差分がある場合、追加された行の最初には「+」が表示され、削除された行の最初には「–」が表示されます。
+<p>追加された行</p>
-<p>削除された行</p>
実際にgit diffコマンドを使ってみよう
実際にgit diffコマンドを使って差分を確認していきましょう。今回は、リポジトリに以下のindex.htmlファイルがコミットされている状態で解説していきます。
※ワークツリー・ステージ・リポジトリのファイルは全て同じのため、差分はない状態です。
<h1>タイトル</h1>
<h1>タイトル</h1>
<p>テキスト</p> <!-- 新規追加 -->
git diff
diff --git a/index.html b/index.html
index 73d7bf3..fcc2251 100644
--- a/index.html
+++ b/index.html
@@ -1 +1,2 @@
<h1>タイトル</h1>
+<p>テキスト</p> ←追加された行
オプションを指定していない、git diffコマンドはワークツリーとステージの差分を調べるので、1行新規で追加されていると差分が表示されます。
git addコマンドでindex.htmlファイルをステージにアップさせ、再度git diffコマンドを実行してみましょう。git add index.html
今度は何も表示がされません。
これは、git addコマンドでステージにindex.htmlファイルをアップさせたため、ワークツリーとステージのファイル差分がないことを意味しています。
git diff --staged
diff --git a/index.html b/index.html
index 73d7bf3..fcc2251 100644
--- a/index.html
+++ b/index.html
@@ -1 +1,2 @@
<h1>タイトル</h1>
+<p>テキスト</p>
すると、先程と同様の差分結果が表示されました。
これはgit addコマンドでステージにindex.htmlファイルがアップされたので、ステージにあるファイルとリポジトリにあるファイルの内容が違うためこのような結果が表示されます。
git commit -m "add text"
この状態で、git diffコマンドを実行するとどうなるでしょうか?
答えは、何も表示がされません。理由はgit addコマンドでステージにアップさせた後に差分を確認した時と全く同じことで、ステージされていたファイルがリポジトリに反映されたので、ステージとリポジトリのファイルは全く同じ内容で差分がないからです。