通過查看brackets-git(用於Brackets的git擴展)的源代碼,我看到在調用git diff
時,^!
(插入符號)正被追加到提交哈希。見GitCli.js, line 754:在調用git diff時,提交hash後做了什麼?(^!)?
function getDiffOfFileFromCommit(hash, file) {
return git(["diff", "--no-ext-diff", "--no-color", hash + "^!", "--", file]);
}
這相當於在命令行下,使用有問題的文件爲例:
$ git diff --no-ext-diff --no-color 1f9ea6e^! -- src/git/GitCli.js
我知道^
要提到的提交的父。 ^!
做什麼?
對於[git rev-parse](http://git-scm.com/docs/git-rev-parse)文檔中提到的所有提交方式,都有很好的指導。在這種情況下,我相信:「r1 ^!包含提交r1但排除其所有父母。」 – Charlie 2014-09-03 18:57:27
從測試中,輸出似乎與調用差異並將其所有父項作爲參數完全相同。我不知道在分析多個樹時(從代碼註釋,它應該是一個錯誤)什麼git做。也許它與父母的合併基礎有一些魔力? – knittl 2014-09-03 19:59:32