21

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

^bb65026 (Brian Danielak 2012-10-27 19:11:54 -0700 1) 你好,世界!
bbcd4a96 (Brian Danielak 2012-10-27 19:11:54 -0700 2) 你好!

重现步骤

从终端提示:

mkdir newProject
cd newProject
git init
echo 'hello, world!' >> testFile.txt
git add testFile.txt
git commit -m "Initial Commit"
git blame testFile.txt

然后验证您的责备输出是否有一个前导插入符号,就像我的一样(尽管您的 SHA 可能不匹配)

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

作为测试,您可以尝试在文件中添加第二行并重新提交,以查看只有第一行的哈希包含前导插入符号

echo 'hello again!' >> testFile.txt
git add testFile.txt
git commit -m "Initial Commit"
git blame testFile.txt

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

^bb65026 (Brian Danielak 2012-10-27 19:11:54 -0700 1) 你好,世界!
bbcd4a96 (Brian Danielak 2012-10-27 19:11:54 -0700 2) 你好!

谁能解释为什么会发生这种情况,以及我是否应该预料到它?只有当一行来自回购中的第一次提交时才会发生这种情况吗?如果是这样,为什么?

4

2 回答 2

23

git blame的文档实际上确实提到了插入符号被用于“边界提交”,看起来他们正在定义类似“这个责备范围内最旧的提交”之类的东西——在你的情况下,它是项目的初始提交,但是有一些不同的选择,你可能只归咎于 3 周前的提交。

于 2012-10-28T02:48:02.057 回答
4

我在一个非常古老的存储库中突然遇到了这个问题,并被它弄糊涂了。

问题最终是我不知何故在某个时候得到了一个浅克隆。一个简单的git fetch --unshallow补救措施。

于 2016-11-30T08:20:43.107 回答