あるファイルが過去の状態からどの様に更新されたか差分を調べてみましょう。
状態 9 のままだとワーキングツリーとインデックスとHEADが同じ状態で面白くないので、次の手順でファイルを更新します。
hoge.txt に c を追加(改行しない)して保存
git add hoge.txt でインデックスに hoge.txt を登録
hoge.txt に d を追加(改行しない)して保存
すると次の状態 10 に変わります。ワーキングツリー、インデックス、HEADの hoge.txt の違いに注目して下さい。
|
|
HEAD
|
← |
HEAD~
|
← |
HEAD~2
|
← |
HEAD~3
|
まずはワーキングツリーとインデックス間の差分を見る方法です。
実際の開発中は一番良く使うコマンドです。
git diff <ファイル名> ※ ファイル名を省略すると更新した全てのファイルの差分を表示します。 ※ ファイル名を「.」(ドット)にすると現在のディレクトリ以下で更新した全てのファイルの差分を表示します。
例えば状態 10 で git diff hoge.txt を実行すると
-abc +abcd
と表示されます。
-が付いている行が削除された行、+が付いている行が追加された行になります。
次はワーキングツリーと指定したコミット間の差分を見る方法です。
git diff <コミット> <ファイル名> ※ ファイル名を省略すると更新した全てのファイルの差分を表示します。 ※ ファイル名を「.」(ドット)にすると現在のディレクトリ以下で更新した全てのファイルの差分を表示します。 ※ コミットの所を HEAD にすると HEAD との差分になります。
次はインデックスと指定したコミット間の差分を見る方法です。
git diff --cached <コミット> <ファイル名> ※ ファイル名を省略すると更新した全てのファイルの差分を表示します。 ※ ファイル名を「.」(ドット)にすると現在のディレクトリ以下で更新した全てのファイルの差分を表示します。 ※ コミットの所を HEAD にすると HEAD との差分になります。
最後は指定したコミット間の差分を見る方法です。
git diff <コミットA> <コミットB> <ファイル名> ※ ファイル名を省略すると更新した全てのファイルの差分を表示します。 ※ ファイル名を「.」(ドット)にすると現在のディレクトリ以下で更新した全てのファイルの差分を表示します。 ※ コミットの所を HEAD にすると HEAD との差分になります。