Git

【Git】変更差分を確認する方法|git diffコマンド

こちらの記事では、Gitで変更差分を確認することができる、git diffコマンドについて詳しく解説しています。

先輩くん
先輩くん
Gitのインストールをしていない人はこちらの記事を参考にしてください!

Gitの学習におすすめ参考書
改訂2版 わかばちゃんと学ぶ Git使い方入門

本書情報
著者湊川 あい
発売日2021/6/12
ページ数280ページ
Kindle版
レビュー
(Amazon)
(84件)
先輩くん
先輩くん
Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!
後輩ちゃん
後輩ちゃん
初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!

綺麗なコードが書けるようになる!
リーダブルコード-より良いコードを書くためのシンプルで実践的なテクニック

本書情報
出版社オライリージャパン
著者Dustin Boswell / Trevor Foucher
発売日2012/6/23
ページ数260ページ
レビュー
(Amazon)
(620件)
先輩くん
先輩くん
より良いコードを書きたい人におすすめの本だよ!
後輩ちゃん
後輩ちゃん
10以上前の書籍ですが、内容は今でも役に立つものばかりです!

git diffコマンドの使い方

git diffとは、変更差分を確認することができるコマンドで、diffとはDifference(差分)を省略したものになります。

git diffコマンドでは、「ワークツリーとステージの差分」「ステージとリポジトリの差分」「特定のファイルとの差分」の3つを確認することができます。

まず最初にワークツリーとステージの差分を確認する方法は以下の通りです。
git diff
ステージとリポジトリの差分を確認する方法はオプション「–staged」を使います。
git diff --staged
特定のファイルとの差分を確認する方法は、差分を調べたいファイルを指定します。
git diff ファイル名

何もない状態で、git diffコマンドを実行した場合は何も表示されません。

差分があった場合の見方

git diffコマンド実行時に差分がある場合、追加された行の最初には「+」が表示され、削除された行の最初には「」が表示されます。

+<p>追加された行</p>
-<p>削除された行</p>

実際にgit diffコマンドを使ってみよう

実際にgit diffコマンドを使って差分を確認していきましょう。
今回は、リポジトリに以下のindex.htmlファイルがコミットされている状態で解説していきます。
※ワークツリー・ステージ・リポジトリのファイルは全て同じのため、差分はない状態です。
<h1>タイトル</h1>
まず初めにindex.htmlファイルに、1行テキストを追加します。
<h1>タイトル</h1>
<p>テキスト</p> <!-- 新規追加 -->
この状態で、git diffコマンドを実行してみます。
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ファイルをアップさせたため、ワークツリーとステージのファイル差分がないことを意味しています。

次にステージとリポジトリの差分を確認する「–staged」オプションを付けて確認してみましょう。
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」コマンドでステージにあるファイルをリポジトリに反映させます。
git commit -m "add text"

この状態で、git diffコマンドを実行するとどうなるでしょうか?
答えは、何も表示がされません。理由はgit addコマンドでステージにアップさせた後に差分を確認した時と全く同じことで、ステージされていたファイルがリポジトリに反映されたので、ステージとリポジトリのファイルは全く同じ内容で差分がないからです。

以上で、git diffの使うタイミングの紹介は終わりです。

ブログランキング・にほんブログ村へ PVアクセスランキング にほんブログ村