383

pom.xmlたとえば、ファイルをマスターブランチからGitの任意の古いバージョンに比較するにはどうすればよいですか?

4

13 に答える 13

408

できるよ:

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
于 2011-04-07T19:23:33.117 に答える
166
git diff <revision> <path>

例えば:

git diff b0d14a4 foobar.txt
于 2011-04-07T19:23:30.540 に答える
52

単一ファイルの最後のコミットの違いを確認したい場合は、次のことができます。

git log -p -1 filename

これはあなたにgitのファイルの差分を与えるでしょう、あなたのローカルファイルを比較していません。

于 2012-08-29T17:18:06.583 に答える
36

最後のコミットでファイルに何が変更されたかを確認するには、次のようにします。

git diff HEAD~1 path/to/file

番号(〜1)を、差分をとるn番目のコミットに変更できます。

于 2012-09-27T23:00:45.643 に答える
9

一般的な構文:

$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でテスト済み。

于 2016-03-11T13:59:38.153 に答える
7

どちらのコミットもHEADでない場合、特にファイル名が長い場合は、bashのブレース展開が非常に便利です(上記の例)。

git diff master~20:pom.xml master:pom.xml

になります

git diff {master~20,master}:pom.xml

bashを使用したブレース拡張の詳細。

于 2017-06-20T11:31:29.873 に答える
7

現在のコミットへの5つのコミットと比較するには、両方ともmaster、単に次のようにします。

git diff master~5:pom.xml master:pom.xml

また、コミットハッシュ番号を参照することもできます。たとえば、ハッシュ番号がの場合、x110bd64次のようにして違いを確認できます。

git diff x110bd64 pom.xml
于 2017-07-01T12:54:44.290 に答える
5
git diff -w HEAD origin/master path/to/file
于 2014-10-20T09:51:51.580 に答える
2
git diff master~20 -- pom.xml

マスターブランチにいない場合にも機能します。

于 2017-03-24T13:08:13.023 に答える
2

グラフィカルツールを使用して問題がない場合(またはそれを好む場合)、次のことができます。

gitk pom.xml

gitkでは、任意のコミットをクリックして(「選択」するため)、他のコミットを右クリックして、好みの順序に応じて、ポップアップメニューで[Diffthis->selected]または[Diffselected->this]を選択できます。

于 2018-07-17T08:57:33.533 に答える
0

GitHubから同じことを行うことに関心のある人は、時間の経過に伴うコミットの比較を参照してください。

于 2015-08-11T11:09:44.317 に答える
0

たとえば、隠し場所にある1つのファイルを比較する必要がある場合は、次のことができます。

git diff stash@{0} -- path/to/file
于 2016-02-29T23:16:29.140 に答える
-1

特定のコミットで差分を探していて、コマンドラインの代わりにgithub UIを使用したい場合(他の人にリンクしたい場合など)、次のことができます。

https://github.com/<org>/<repo>/commit/<commit-sha>/<path-to-file>

例えば:

https://github.com/grails/grails-core/commit/02942c5b4d832b856fbc04c186f1d02416895a7e/grails-test-suite-uber/build.gradle

右上にある[前へ]リンクと[次へ]リンクに注意してください。これにより、コミット内のすべてのファイルをナビゲートできます。

ただし、これは特定のコミットに対してのみ機能し、任意の2つのバージョンを比較する場合には機能しません。

于 2017-02-08T22:12:22.197 に答える