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 addでhey.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だけだとインデックスに登録されたファイルは表示されないので注意してください