gitでファイルのHEADと特定のコミットとの変更箇所を調べる

2016年11月14日(更新: 2016年11月14日)

git でファイルの現在の状態と、かなり前のコミット時点での状態を比較したい時があります。

時々忘れるので方法を以下に書きます。

コマンド git log でコミットのハッシュ値を取得

今の状態と比較したい古いコミットのハッシュ値を調べるには git log を使用します。

git log

コミットメッセージなどの情報と一緒にハッシュ値が表示されます。

git log でコミットのハッシュ値を得る

コミットのハッシュ値とは、例えば以下のようなものです。

c66a294e5dff3fb3ddce84a7e273fe4afde471eb

コミットが多い場合は、オプション oneline をつけると、コミットメッセージと簡易ハッシュ値(ハッシュ値の先頭数文字)だけを表示できるので探しやすいです。

git log --oneline

オプション oneline 付きの git log

以下のような簡易ハッシュ値でも問題なく比較ができます。

c66a294

コマンド git diff でコミット間の差分を調べる

それでは、先ほど得たハッシュ値を使って、ファイルの変更箇所を調べてみましょう。

これを行うには git diff コマンドを使って、以下のようにします。

git diff <比較元のコミットのハッシュ値> <比較対象のコミットのハッシュ値> <ファイル名>

例えば、test.txt というファイルの、HEADの状態とコミット c66a294 の状態との差分を調べたい場合は、以下のようにコマンドを入力します。

git diff c66a294 HEAD text.txt

「比較元のコミットのハッシュ値」を古いコミットにすると、新しいコミットのファイルの変更内容が追加を意味する緑色の文字で表示されるため、わかりやすいと思います。

git diff でコミット間のファイルの変更箇所を表示

以上でコミット間のファイルの変更箇所を調べることができます。

コメントを残す

メールアドレスが公開されることはありません。