Django Girls and Boys 備忘録

Python、Selenium、Django、java、iPhoneアプリ、Excelマクロなどで気付いたこと、覚えておきたいことなどを載せていきます。

【Git】git diffによる差分確認について


前回、前々回でステージングエリアへの登録、コミットまで行いましたが、今回は、ファイルの差分を確認する機能についてです。

 

差分を確認するためのコマンドとしては、「git diff」を使用します。

 

はじめに、ワーキングツリーとステージングエリアの差分を確認してみます。

 

事前準備として、たとえば、ワークツリー内のファイル「Test.txt」内にエディターで、1行目に"git1"、2行目に"git2"と記載しておきます。

 

この状態で、「git diff」コマンドを実行すると、

 

$ git diff
diff --git a/Test.txt b/Test.txt
index e69de29..dde4690 100644
--- a/Test.txt
+++ b/Test.txt
@@ -0,0 +1,2 @@
+git1
+git2

 

のように表示されます。

 

追加された行は先頭に「+」がついて緑色で表示され、削除された行は先頭に「-」がついて赤色で表示されます(上の例は色はついてませんが実際には色付きで表示されます)。

 

今回は1行目に"git1"、2行目に"git2"を追加しているため、それぞれ「+」つきで表示されています。削除はないため「-」表示はありません。

 

次に、これを

 

$ git add -A

 

でステージングエリアに登録します。

この状態で、「git diff」を実行すると、

 

$ git diff

 

ということで、ワーキングツリーとステージングエリアのファイルの間に差分がないため何も表示されません。

 

ここで、元ファイルの「Test.txt」の2行目の"git2"を削除し、"git3"を追加します。

この状態で、「git diff」を実行すると、

 

$ git diff
diff --git a/Test.txt b/Test.txt
index dde4690..ae056bb 100644
--- a/Test.txt
+++ b/Test.txt
@@ -1,2 +1,2 @@
 git1
-git2
+git3

 

のような表示になります。

2行目の"git2"が削除されたため、「-」つきで"git2"が表示され、その後"git3"を追加したため、「+」つきで"git3"が表示されています。

 

 

次に、ステージングエリアとローカルリポジトリの間の差分を確認するには、「--cached」を追加して、「git diff --cached」を使用します。

 

現在の状態で実行すると、

 

$ git diff --cached
diff --git a/Test.txt b/Test.txt
index e69de29..dde4690 100644
--- a/Test.txt
+++ b/Test.txt
@@ -0,0 +1,2 @@
+git1
+git2

 

のように表示されます。

ステージングエリアにのみ、先程追加したファイル「Test.txt」が存在するため、「Test.txt」のそれぞれの行が「+」つきで表示されています。

ステージングエリアにあるのは1行目に"git1"、2行目に"git2"を追加した最初の状態のファイルです。

 

ここで、

 

$ git commit -m "First commit"

 

でコミットし、再度「git diff --cached」を実行すると、

 

$ git diff --cached

 

のように、差分がないため何も表示されません。

続いて、ワーキングツリー内にある1行目に"git1"、2行目を"git2"から"git3"に変更したファイルを

 

$ git add -A

 

でステージングエリアに登録します。

ここで、再度「git diff --cached」を実行すると、

 

$ git diff --cached
diff --git a/Test.txt b/Test.txt
index dde4690..ae056bb 100644
--- a/Test.txt
+++ b/Test.txt
@@ -1,2 +1,2 @@
 git1
-git2
+git3

 

のような表示になります。

 

ワーキングツリーとステージングエリアとの比較の時にあった内容と同様ですが、

ステージングエリア側の「Test.txt」ファイル内の2行目の"git2"が削除されたため、「-」つきで"git2"が表示され、そこに"git3"を追加したため、「+」つきで"git3"が表示されています。

 

ワーキングツリー、ステージングエリア、ローカルリポジトリ間の登録と差分確認の概略イメージを図示すると以下のようになります。

ワーキングツリー、ステージングエリア、ローカルリポジトリと差分確認

ワーキングツリー、ステージングエリア、ローカルリポジトリと差分確認

 

 

 

 

 

 

関連記事:

【Git】Gitのダウンロード、インストール方法 - Django Girls and Boys 備忘録

 

【Git】付属ツールGit Bashについて、起動方法 - Django Girls and Boys 備忘録

 

【Git】Git Bashのホームディレクトリ変更方法 - Django Girls and Boys 備忘録

 

【Git GitHub】初心者、初級者におすすめの入門書 - Django Girls and Boys 備忘録

 

【Python Django】git init について - Django Girls and Boys 備忘録

 

【Git】ユーザー名とメールアドレスの設定方法 - Django Girls and Boys 備忘録

 

【Git】git addとステージングエリア(インデックス)への登録について - Django Girls and Boys 備忘録

 

【Git】git commitとローカルリポジトリへの登録、gitの概略イメージ - Django Girls and Boys 備忘録

 

【Git】git diffによる差分確認について - Django Girls and Boys 備忘録

 

【Git GitHub】GitHubのアカウント作成方法 - Django Girls and Boys 備忘録

 

【Git GitHub】公開鍵の設定方法 - Django Girls and Boys 備忘録

 

【Git GitHub】Gitのダウンロード、インストールから「git add」、「git commit」によるGitへの登録までの一通りの方法 - Django Girls and Boys 備忘録

 

【Git GitHub】「git add」、「git commit」後の「git push」について、リモートリポジトリにプッシュする方法 - Django Girls and Boys 備忘録