为什么git blame视图中的一行SHA有一个主要的插入符号(^)?

bri*_*ndk 14 git

我不确定这种行为是否很奇怪,但是这就是发生了什么:似乎我git blame在一个文件上运行,该文件中来自初始提交的任何行都有一个SHA带有一个前导插入符号(^),就像这样

^bb65026 (Brian Danielak 2012-10-27 19:11:54 -0700 1) hello, world!
bbcd4a96 (Brian Danielak 2012-10-27 19:11:54 -0700 2) hello again!

重现步骤

从终端提示:

mkdir newProject
cd newProject
git init
echo 'hello, world!' >> testFile.txt
git add testFile.txt
git commit -m "Initial Commit"
git blame testFile.txt
Run Code Online (Sandbox Code Playgroud)

然后验证你的责备输出有一个主要的插入符号,就像我的那样(虽然你的SHA可能不匹配)

^bb65026 (Brian Danielak 2012-10-27 19:11:54 -0700 1) hello, world!
Run Code Online (Sandbox Code Playgroud)

作为测试,您可以尝试向文件添加第二行并重新提交,以查看只有第一行的哈希值包含一个主要的插入符号

echo 'hello again!' >> testFile.txt
git add testFile.txt
git commit -m "Initial Commit"
git blame testFile.txt
Run Code Online (Sandbox Code Playgroud)

我的责备输出现在看起来像这样:

^bb65026 (Brian Danielak 2012-10-27 19:11:54 -0700 1) hello, world!
bbcd4a96 (Brian Danielak 2012-10-27 19:11:54 -0700 2) hello again!

任何人都可以解释为什么会发生这种情况,以及我是否应该期待它?只有当一行来自回购中的第一次提交时才会发生吗?如果是这样,为什么?

Mar*_*off 18

git blame的文档实际上确实提到了插入符号用于"边界提交",看起来他们正在定义类似"这个责任范围中最老的提交" - 在你的情况下它是项目的初始提交,但是有一些不同的选择,你可能只会责怪3周前的提交.


Rob*_*her 6

我突然在一个非常旧的存储库中遇到了这个问题,并对此感到困惑。

问题最终是我在某个时刻以某种方式获得了浅克隆。一个简单的git fetch --unshallow办法就解决了。