2014-04-25 67 views
3

讓,如果我做了git log說,看到一個用ID提交280c5af57b02c41edbf947a0eed31c72e2839123如何區分提交?

似乎看到那些所作的更改提交,我可以做

git diff 280c5af57^ 280c5af57 

git show 280c5af57 

但是,由於我已將opendiff設置爲diff工具(使用https://gist.github.com/bkeating/329690上的說明),因此上面的第一條命令將使用opendiff ,而第二個命令將在命令行中使用diff。

不是使用Bash別名或函數,有沒有辦法告訴git來區分它,而無需鍵入或粘貼兩次提交ID? (如svn diff -c 321234

+0

請問git diff 280c5af57b02c41edbf947a0eed31c72e2839123不適合你嗎? –

+0

@AJ right,it will not –

+0

@動靜能量爲什麼你不想使用Bash或Git別名? –

回答

1

您可以添加這樣的事情你gitconfig

[alias] 
    changes = !sh -c 'git diff "$0^" "$0"' 

現在你可以運行

git changes 280c5af57b02c41edbf947a0eed31c72e2839123 

,你只需要到指定SHA(或其他)一次。

(這個回答也覺得有點沉重。有沒有人有不通過!sh -c箍跳的解決方案?)

+1

不是這幾乎與使用bash別名相同? –

+0

@動靜能量從某種意義上說,是的。但是這樣做的好處是,你可以輸入'git ',就像任何其他Git子命令一樣。 – bdesham

4

git diff默認爲對工作樹和/或指數進行比較。用於比較直銷回購的樹的命令是git diff-tree。嘗試:

git diff-tree --ext-diff -p 280c5af 
+1

請注意,'git diff-tree'和'git show'兩者與合併提交(可以用'-c',' - cc'和'-m'控制)做了不同的事情(通常是合理的)。用簡單的'git diff',你可以識別兩個特定的樹,所以組合差異的特殊操作是不適用的。 – torek

+0

aha,但'opendiff'不會用來區分它......只有命令行diff –

+0

啊。我看到這些文檔說明你必須明確地打開它。我不使用它們,如果我正確地閱讀它,現在應該做的伎倆。 – jthill