pom.xml
たとえば、ファイルをマスターブランチからGitの任意の古いバージョンに比較するにはどうすればよいですか?
13 に答える
できるよ:
git diff master~20:pom.xml pom.xml
...現在のバージョンを最初の親を介して20リビジョン前pom.xml
のものと比較します。もちろん、コミットのオブジェクト名(SHA1sum)や、リビジョンを指定する他の多くの方法のmaster
いずれかに置き換えることができます。master~20
これは実際には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のファイルの差分を与えるでしょう、あなたのローカルファイルを比較していません。
最後のコミットでファイルに何が変更されたかを確認するには、次のようにします。
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でgit1.9.1でテスト済み。
どちらのコミットもHEADでない場合、特にファイル名が長い場合は、bashのブレース展開が非常に便利です(上記の例)。
git diff master~20:pom.xml master:pom.xml
になります
git diff {master~20,master}:pom.xml
bashを使用したブレース拡張の詳細。
現在のコミットへの5つのコミットと比較するには、両方ともmaster
、単に次のようにします。
git diff master~5:pom.xml master:pom.xml
また、コミットハッシュ番号を参照することもできます。たとえば、ハッシュ番号がの場合、x110bd64
次のようにして違いを確認できます。
git diff x110bd64 pom.xml
git diff -w HEAD origin/master path/to/file
git diff master~20 -- pom.xml
マスターブランチにいない場合にも機能します。
グラフィカルツールを使用して問題がない場合(またはそれを好む場合)、次のことができます。
gitk pom.xml
gitkでは、任意のコミットをクリックして(「選択」するため)、他のコミットを右クリックして、好みの順序に応じて、ポップアップメニューで[Diffthis->selected]または[Diffselected->this]を選択できます。
GitHubから同じことを行うことに関心のある人は、時間の経過に伴うコミットの比較を参照してください。
たとえば、隠し場所にある1つのファイルを比較する必要がある場合は、次のことができます。
git diff stash@{0} -- path/to/file
特定のコミットで差分を探していて、コマンドラインの代わりにgithub UIを使用したい場合(他の人にリンクしたい場合など)、次のことができます。
https://github.com/<org>/<repo>/commit/<commit-sha>/<path-to-file>
例えば:
右上にある[前へ]リンクと[次へ]リンクに注意してください。これにより、コミット内のすべてのファイルをナビゲートできます。
ただし、これは特定のコミットに対してのみ機能し、任意の2つのバージョンを比較する場合には機能しません。