通过查看括号-git的源代码(Brackets的git扩展),我看到^!
(caret bang)在调用时被附加到提交哈希git diff
.见GitCli.js,第754行:
function getDiffOfFileFromCommit(hash, file) {
return git(["diff", "--no-ext-diff", "--no-color", hash + "^!", "--", file]);
}
Run Code Online (Sandbox Code Playgroud)
这将在命令行中转换为以下内容,使用相关文件作为示例:
$ git diff --no-ext-diff --no-color 1f9ea6e^! -- src/git/GitCli.js
Run Code Online (Sandbox Code Playgroud)
我知道这^
将引用提交的父级.怎么^!
办?
commit^!
是一个范围说明符,表示:此提交,但不包括其父项.它相当于指定:commit ^parent1 ^parent2 ^parentN
.
对于diff,这没有意义(你只能比较两棵树)从测试命令看来,似乎显示了父项的合并基础和最后一个父项之间的差异.我想的git(MIS)解释类似范围的参数A...B
,这将显示出之间的差异merge-base A B
和B
(git diff parent1...parent2
将产生相同的差异).不确定在章鱼合并的情况下会发生什么.
我可能错了,这些只是我从测试库中获取并查看git代码(builtin/diff.c
)的假设.