簡單的答案是它是一個錯誤。
通過使用git rev-parse
可以看到git diff
有效看到的內容。下面是適用於普通的^!
後綴提交:
$ git rev-parse 699d47e1d^!
699d47e1d2777ad1c2a867671e35daa821769f29
^4aaf5b0b21ac1fc294066593ac5243b3eaff897b
,並在這裏將它應用到一個合併提交:
$ git rev-parse 117ddefdb^!
117ddefdb4dfd9b40ae60967a7327754d8ce7a87
^5e5a7cd9327cdbe6b50b5a0ead9b2ee5fb30789c
^699d47e1d2777ad1c2a867671e35daa821769f29
當您提供壓縮的符號來git diff
,Git會使其通過相同的擴張代碼git rev-parse
使用。然而,git diff
不是將其打印出來,而是試圖回溯解釋結果。如果有兩個提交散列(具有各種標誌),它將在兩個命名的提交之間運行差異。如果有三個或更多,它會做一些不同的事情。
相關(但不完全相同):What is the difference between `git diff topic1 topic2 ^master` and `git diff topic1..topic2 ^master`?
有沒有解決的eta?只是好奇。 – hIpPy
我不認爲任何人都在意足以使這項工作。在另一方面,他們可能會認爲這是一個特點:如果他們把我的修爲其他問題,你風與合併差異,你用'混帳show'得到相同的一個。 – torek
老實說,我認爲'commit ^!'是完美的,至少可以從文檔中區分出合併。 'commit〜commit'用於提交和合並,但我覺得合併的直觀性較差。 – hIpPy