回答:
できるよ:
git diff master~20:pom.xml pom.xml
...現在の20リビジョン前のpom.xml
ものからmaster
最初の親までのものを比較します。master~20
もちろん、をコミットのオブジェクト名(SHA1sum)またはリビジョンを指定する他の多くの方法で置き換えることができます。
これは実際には、古いpom.xml
バージョンと作業ツリーのバージョンを比較するものであり、でコミットされたバージョンではありませんmaster
。それが必要な場合は、代わりに以下を実行できます。
git diff master~20:pom.xml master:pom.xml
git diff <revision> <path>
例えば:
git diff b0d14a4 foobar.txt
単一のファイルの最後のコミットの違いを見たい場合は、次のようにすることができます:
git log -p -1 filename
これはgit内のファイルの差分を提供しますが、ローカルファイルを比較しません。
-1
変更を取得するまで、段階的に増分できます。
gitlog () { git log -${3:-p} -${2:-1} $1; }
同じように使用:gitlog Rakefile
かgitlog Rakefile 5
とgitlog Rakefile 10 s
。最初は1つの差分を示しています。2番目は5つの差分を示しています。3番目は10を示します--no-patch
。
最後のコミットでファイルの変更内容を確認するには:
git diff HEAD~1 path/to/file.
番号(〜1)を、比較するn番目のコミットに変更できます。
一般的な構文:
$git diff oldCommit..newCommit -- **FileName.xml > ~/diff.txt
リポジトリ内の任意の場所にある「FileName.xml」という名前のすべてのファイル。
「-」と「**」の間のスペースに注意してください
あなたの質問に対する答え:
$git checkout master
$git diff oldCommit..HEAD -- **pom.xml
or
$git diff oldCommit..HEAD -- relative/path/to/pom.xml
いつものようにgitと同様に、tag / sha1 / "HEAD ^"を使用してコミットを識別できます。
Ubuntuのgit 1.9.1でテスト済み。
GitHubから同じことを行うことに関心のある人は、時間をかけてコミットを比較するをご覧ください。
たとえば、スタッシュ内の単一のファイルを比較する必要がある場合は、
git diff stash@{0} -- path/to/file
特定のコミットでdiffを探していて、コマンドラインの代わりにgithub UIを使用したい場合(他の人にリンクしたい場合など)、次のことができます。
https://github.com/<org>/<repo>/commit/<commit-sha>/<path-to-file>
例えば:
右上の[前へ]および[次へ]リンクに注目してください。これにより、コミット内のすべてのファイルをナビゲートできます。
ただし、これは特定のコミットでのみ機能し、任意の2つのバージョン間の比較では機能しません。
git diff <revision>:foo/ HEAD:foo/
。