web-dev-qa-db-ja.com

Gitコミットの変更を確認するにはどうすればいいですか?

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

私はdiff/logにそのような出力を与える明白なオプションを見つけていません。

1199
laktak

特定のCOMMITハッシュの差分を見るには:

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

あるいは、git show COMMITは非常によく似たことをします。 (コミットのデータ。差分を含みますが、マージコミットには使用できません。) git showのマンページ を参照してください。

1538
Nevik Rehnel

" 親とのgit commitの差分の略記 "で述べたように、 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でツリーっぽいことはどういう意味ですか? "も参照してください。

427
VonC

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

git show <COMMIT>
264
Lakhan

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

git show HEADと同等です。

git show HEAD~1は1コミット前に戻ります。

58
Adam Salma

まず、コミットIDを取得します。

git log #to list all

または

git log -p -1 #last one commit id

コミットIDをコピーします。

特定のコミットからの変更をリストするために2つの方法を使用します。

方法1:

git diff commit_id^! #commit id something like this 1c6a6000asad012

方法2:

git show commit_id
For example: git show 1c6a600a
27
git show <commit_sha>

これはそのコミットの内容を正確に示しています。 2つのコミットシェアの間にスペースを入れるだけで範囲を指定できると思います。

git show <beginning_sha> <ending_sha>

あなたの機能ログがすべて一列に並んでいるので、頻繁にリベースしているなら、これはかなり役に立ちます。

24
Iwnnay

git-diff(1) のmanページから:

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>

最後のコミット前と最後のコミット前のバージョンを比較してください。

確かに、それは少し混乱を招くように表現されています。

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

24
user456814

以下がその仕事をしているようです。マージによってもたらされたことを示すためにそれを使用します。

git whatchanged -m -n 1 -p <SHA-1 hash of merge commit>
19
MichaelMoser

他の可能性:

git log -p COMMIT -1

11
John_West
git difftool COMMIT^ <commit hash>

あなたがあなたのdifftoolを設定したならば、それも可能です。

configure difftool またはマニュアルページ here の使い方

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

9

親コミットとの差分を見るためにgit diff HEAD HEAD^1を使うことができます。

ファイルのリストだけを見たい場合は、--statオプションを追加してください。

7
Irshu

投稿者と時間をコミットで確認するにはgit show COMMITを使用してください。これは次のようになります。

commit 13414df70354678b1b9304ebe4b6d204810f867e
Merge: a2a2894 3a1ba8f
Author: You <[email protected]>
Date:   Fri Jul 24 17:46:42 2015 -0700

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

どのファイルが変更されたのかを知りたい場合は、git diff --stat a2a2894 3a1ba8fの上のMerge行の値を使用して以下を実行してください。

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

6
Nikita G.

特定のコミットとその最後のコミットを比較するための下記のコマンドが好きです。

git diff <commit-hash>^-

例:

git diff cd1b3f485^-
5
starcwl

私はWindows 10上でGitバージョン2.6.1.windows.1を実行しているので、Nevikの答えを少し修正する必要がありました(キャレットではなくチルダ):

git diff COMMIT~ COMMIT

もう1つの選択肢は、キャレットを引用することです。

git diff "COMMIT^" COMMIT
4
Juuso Ohtonen

私はいつもやる:

git diff HEAD~1

最後のコミットに関する変更を表示します。もっと多くのコミットがある場合は、1を1に増やして、表示したいコミットの数と比較してください。

2
Alex

このコマンドはGitの親のコミットハッシュを取得します。

git log -n 2 <commit-hash>

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

例:

[email protected] ~/ $ git log -n 2 7f65b9a9d3820525766fcba285b3c678e889fe3

commit 7f65b9a9d3820525766fcba285b3c678e889fe3b
Author: souparno <[email protected]>
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 <[email protected]>
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
2

完全な変更をチェックするために:

  git diff <commit_Id_1> <commit_Id_2>

変更/追加/削除されたファイルのみをチェックする場合:

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

_ note _ :間でコミットせずにdiffをチェックするために、コミットIDを置く必要はありません。

2
bit_cracker007