最近のコミットで変更されていないファイルの git diff HEAD~1 を表示します

最近のコミットで変更されていないファイルの git diff HEAD~1 を表示します

Git では、以前のコミットとの違いを確認するために、次のコマンドを実行します。

git diff HEAD~1

単一のコミットに関連するコミットを表示するには、file次のコマンドを実行します。

git log --oneline file

しかし、以下を実行しても参照するファイルが最後のコミットで変更されていない場合、Git は何も表示しません。

git diff HEAD~1 file

HEADが指す参照でそのファイルがコミットされていない場合、 と同様の方法で特定のファイルとの diff を表示するにはどうすればよいでしょうかHEAD?

答え1

最後のコミットとその前のコミットの間で変更されていないファイルの diff を表示する場合は、SHA を明示的に参照する必要があります ( HEAD~1)。

ログを実行して、表示したいSHAをいくつか確認します。

git log --oneline <file>

出力例は次のとおりです。

af46919 削除 - 代わりに地元のピザ屋に電話
b09206c ソースとドクターペッパーのボトルをリストに追加しました
ad90f90 生地をこねて一晩放置する

ファイルに加えられた変更の差分を確認したい場合は、2 番目に表示される SHA を介して参照します。この場合、例から次のようになります。

git diff b09206c <file>

上記は、

git diff b09206c HEAD <file>

あるいは、次のように考えてみましょう。

git diff <start-commit-SHA> <future-commit-SHA> <file>

これを 1 つのコマンドとして実行するには (スクリプトなど)、次のようにします。

git log --oneline <file> |awk 'NR==2{print $1}'|xargs -I {} git diff {} <file> 

関連情報