現在存在しているように、そしてそれを変更した最後のコミットの前に存在していたように、gitに特定のファイル間の差分を生成させることは可能ですか?
それがわかっていれば、
$ git log --oneline myfile
123abc Fix some stuff
456def Frobble the foos
789dba Initial commit
それからgit diff 456def myfile
はmyfileへの最後の変更を示します。 git log
によって生成された知識なしで同じことをすることは可能です。 123abcの変更点
これは存在しますが、実際にはgit log
の機能です。
git log -p [--follow] [-1] <path>
-p
は単一のコミットからのインライン差分を表示するためにも使用できることに注意してください。
git log -p -1 <commit>
使用されるオプション:
-p
(これも-u
または--patch
)は、git-log
のマニュアルページでdeeeeeeeepに隠されており、実際にはgit-diff
の表示オプションです。 log
と一緒に使用すると、生成されるパッチ各コミットごととコミット情報が表示されます。--- 非表示指定された<path>
に触れないコミットを隠します。 (この振る舞いは--full-diff
の段落で説明されているので、各コミットの全差分が表示されます。)-1
はjust最新の変更を示しています指定されたファイル(-n 1
の代わりに-1
を使用することができます);そうでなければallそのファイルの0以外の差分が表示されます。--follow
は、名前変更前に行われた変更を確認するために必要です。私が言うことができる限りでは、これはgit log
(または同様のもの)を使用して介在するリビジョンの数を数えるかコミットのハッシュを決定することなくファイルに加えられた最後の変更を直ちに見る唯一の方法です。
古いリビジョンの変更を確認するには、ログをスクロールするか、ログを開始するコミットまたはタグを指定します。 (もちろん、commitまたはtagを指定すると、正しいcommitまたはtagが何であるかを突き止めるという最初の問題に戻ります。)
クレジットが支払期日であるクレジット
Git diffを使用する方法の1つは、次のとおりです。
git diff <commit> <path>
そして最後のコミットの一つのコミットを参照する一般的な方法は実際のHEADへの相対パスとしてです。以前のコミットをHEAD ^(この例では123abcになります)またはHEAD ^^(この例では456defになります)などとして参照できます.
だからあなたの質問に対する答えは:
git diff HEAD^^ myfile
あなたがグラフィカルツールを使って大丈夫なら、これはとてもうまくいきます:
gitk <file>
gitkはファイルが更新された全てのコミットを表示します。コミットをマークすると、リスト内の前のコミットに対する差分が表示されます。これはディレクトリに対しても機能しますが、選択したコミットに対して差分をとるファイルを選択することになります。超便利!