回答:
特定のCOMMIT
ハッシュの差分を表示するには :
git diff COMMIT~ COMMIT
そのCOMMIT
先祖との違いが表示されますCOMMIT
。コマンドとその表記法に関するコマンドとgitrevisionsの詳細については、git diffのマニュアルページを参照してください。 ~
または、git show COMMIT
非常によく似た処理を行います。(その差分を含むコミットのデータ-マージコミットではありません。)git show manpageを参照してください。
^
ThomsonシェルとBourneシェル(その同義語|
)rc
とその派生物(キャレット演算子)、およびzsh
Extendedglobが有効(not
HEAD^
コミットに複数の親がある場合(つまり、マージコミット)、最初の親を意味することに注意してください。
git diff COMMIT~ COMMIT
キャレットの代わりにチルダに注意してください。私は、Windows 10上でGitのバージョン2.6.1.windows.1を実行している
「親との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でtree-ishはどういう意味ですか?」も参照してください。
次の簡単な方法も試すことができます。
git show <COMMIT>
まず、次を使用してコミット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
^!
意味ですか?
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>
最後のコミット前のバージョンと最後のコミットを比較します。
確かにそれは少し紛らわしい言葉で書かれています。
最新のコミットとその前のコミットを比較します。
git diff HEAD HEAD^
ます。
以下はその仕事をするようです。マージによってもたらされたものを示すために使用します。
git whatchanged -m -n 1 -p <SHA-1 hash of merge commit>
git log
ますか?(stackoverflow.com/a/18585297/6309のため)
別の可能性:
git log -p COMMIT -1
git diff HEAD HEAD^1
親コミットとの差分を確認するために使用できます。
ファイルのリストのみを表示したい場合は、--stat
オプションを追加します。
diff
コマンドの読み方は次のとおりです。コミットHEAD
からコミットに変更するには、ファイルをどのように変更する必要がありますHEAD^1
か?
git difftool COMMIT^ <commit hash>
difftoolを設定している場合も可能です。
difftoolの設定方法はこちら、 またはこちらのマニュアルページをご覧ください。
さらにgit diff-tree --no-commit-id --name-only -r <commit hash>
、特定のコミットハッシュで変更/コミットされたファイルを確認するために使用できます
コミットで作成者と時間を確認するには、を使用します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
git --stat a2a2894 3a1ba8f
"を実行してください。私はあなたの意味だと思うgit diff a2a2894 3a1ba8f
か、他unknown option: --stat
。
完全な変更を確認するには:
git diff <commit_Id_1> <commit_Id_2>
変更/追加/削除されたファイルのみをチェックするには:
git diff <commit_Id_1> <commit_Id_2> --name-only
注:コミットせずに差分を確認する場合は、コミットIDを入力する必要はありません。
私はWindows 10でGitバージョン2.6.1.windows.1を実行しているため、Nevikの回答を少し変更する必要がありました(キャレットの代わりにチルダ):
git diff COMMIT~ COMMIT
別のオプションは、キャレットを引用することです:
git diff "COMMIT^" COMMIT
次のコマンドは、Gitの親コミットハッシュを取得します。
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
グラフィカルなビューでソースの変更を確認する場合、
$gitk (Mention your commit id here)
例えば:
$gitk HEAD~1