1978

するとgit diff COMMIT、そのコミットと HEAD の間の変更が表示されますが (私の知る限り)、その単一のコミットによって行われた変更を確認したいと思います。

diff/logで、その出力が得られる明らかなオプションは見つかりませんでした。

4

23 に答える 23

2465

COMMIT特定のハッシュの差分を表示するにCOMMITは、コミットのハッシュは次のとおりです。

git diff COMMIT~ COMMITCOMMITそれの先祖との違いを示しますCOMMIT。コマンドの詳細についてはgit diffのマニュアル ページを参照し、表記法とその仲間についてはgitrevisionsを参照してください。~

あるいは、git show COMMIT非常に似たようなことをします。(差分を含むコミットのデータ。ただし、マージ コミットは対象外です。) git show manpageを参照してください。

(それと頭git diff COMMITの違いも示しますCOMMIT。)

于 2013-07-10T06:23:49.177 に答える
596

git commit とその親の diff の短縮形は?」で述べたように、次のように使用することもできますgit diff

git diff COMMIT^!

また

git diff-tree -p COMMIT

git show では、(diff だけに集中するために) 次のことを行う必要があります。

git show --color --pretty=format:%b COMMIT

COMMITパラメータはcommit -ishです:

コミット オブジェクト、またはコミットオブジェクトに再帰的に逆参照できるオブジェクト。以下はすべてコミットっぽいものです: コミット オブジェクト、コミット オブジェクトを指すタグ オブジェクト、コミット オブジェクトを指すタグ オブジェクトを指すタグ オブジェクトなど。

コミットっぽいものを参照するには、 gitrevision "SPECIFYING REVISIONS"を参照してください。「 Git でツリーっぽいとはどういう意味ですか?
」 も参照してください。

于 2013-07-10T06:31:03.333 に答える
482

この簡単な方法を試すこともできます。

git show <COMMIT>
于 2016-06-15T09:02:28.373 に答える
102

git show最新のコミットで行われた変更を示します。と同等git show HEADです。

git show HEAD~1コミットを 1 つ戻します。

于 2016-09-16T01:50:15.093 に答える
30

git-diff(1)のマニュアルページから:

git diff [options] [<commit>] [--] [<path>…]
git diff [options] --cached [<commit>] [--] [<path>…]
git diff [options] <commit> <commit> [--] [<path>…]
git diff [options] <blob> <blob>
git diff [options] [--no-index] [--] <path> <path>

真ん中の 3 番目のものを使用します。

git diff [options] <parent-commit> <commit>

また、同じmanページの下部の例セクションから:

$ git diff HEAD^ HEAD      <3>

最後のコミットの前のバージョンと最後のコミットを比較します。

確かに、少し紛らわしい言い回しですが、次のように混乱が少なくなります。

最新のコミットとその前のコミットを比較します。

于 2013-07-10T07:20:58.123 に答える
23

別の可能性:

git log -p COMMIT -1
于 2016-02-16T14:49:39.047 に答える
16

私にとって、これはうまく機能します

git show COMMIT --compact-summary

次の情報を表示するもの

ファイルの作成または削除 ("new" または "gone"、シンボリック リンクの場合はオプションで "+l") やモードの変更 (追加または削除のための "+x" または "-x") などの拡張ヘッダー情報の要約を出力します。それぞれ実行可能ビット) diffstat で。ファイル名部分とグラフ部分の間に情報を入れます。--stat を意味します。

于 2021-07-21T17:48:18.200 に答える
12

git diff HEAD HEAD^1親コミットとの差分を表示するために使用できます。

ファイルのリストのみを表示する場合は、--statオプションを追加します。

于 2015-12-08T04:17:59.880 に答える
9

コミットごとに作成者と時間を表示するには、 を使用しますgit show COMMIT。次のような結果になります。

commit 13414df70354678b1b9304ebe4b6d204810f867e
Merge: a2a2894 3a1ba8f
Author: You <you@you.com>
Date:   Fri Jul 24 17:46:42 2015 -0700

     Merge remote-tracking branch 'origin/your-feature'

変更されたファイルを確認するには、上記のMerge行の値を使用して次のコマンドを実行しますgit diff --stat a2a2894 3a1ba8f

実際の差分を見たい場合は、 を実行してくださいgit --stat a2a2894 3a1ba8f

于 2015-07-27T22:20:05.713 に答える
9
git difftool COMMIT^ <commit hash>

difftool を構成している場合も可能です。

difftoolの設定方法はこちらを参照してください。または、こちらのマニュアルページ。

さらに、git diff-tree --no-commit-id --name-only -r <commit hash>特定のコミット ハッシュでどのファイルが変更/コミットされたかを確認するために使用できます。

于 2014-03-24T12:49:54.753 に答える
7

完全な変更を確認するには:

  git diff <commit_Id_1> <commit_Id_2>

変更/追加/削除されたファイルのみを確認する場合:

  git diff <commit_Id_1> <commit_Id_2> --name-only

: コミットを行わずに差分をチェックする場合、コミット ID を入力する必要はありません。

于 2019-01-29T19:41:54.180 に答える
4

このコマンドは、Git の親 commit-hash を取得します。

git log -n 2 <commit-hash>

その後git diff-tool <commit-hash> <parent-commit-hash>

例:

bonnie@bonnie ~/ $ git log -n 2 7f65b9a9d3820525766fcba285b3c678e889fe3

commit 7f65b9a9d3820525766fcba285b3c678e889fe3b
Author: souparno <souparno.majumder@gmail.com>
Date:   Mon Jul 25 13:17:07 2016 +0530

CSS changed to maintain the aspect ratio of the channel logos and to fit them properly.

commit c3a61f17e14e2b80cf64b172a45f1b4826ee291f
Author: souparno <souparno.majumder@gmail.com>
Date:   Mon Jul 25 11:28:09 2016 +0530

The ratio of the height to width of the channel images are maintained.

この後

git difftool 7f65b9a9d3820525766fcba285b3c678e889fe3b c3a61f17e14e2b80cf64b172a45f1b4826ee291f
于 2016-07-29T12:19:29.580 に答える