Git提交和参考头

时间:2018-11-28 18:36:33

标签: git github git-commit

存在git提交的引用标头,这些引用本身就是单独的提交。例如,有两个提交,例如925ca878bc3c6c264ba5335b39be762a39e462ec035d1c4e0d4be18bf8f46150072d1c4e0d4

当我做git show-ref --heads --tags时,我会得到

925ca878bc3c6c264ba5335b39be762a39e462ec refs/heads/035d1c4e0d4be18bf8f46150072d1c4e0d4

1afff830dc0611c924d3bdaf490b0378dd4f2444 refs/heads/4d04fde758564386fb5d6922a1d4f01970e4e050

925ca878bc3c6c264ba5335b39be762a39e462ec refs/heads/af76057dea6c0f395fa2eada0e45dd8c01a4aea6

所以现在在925ca878bc3c6c264ba5335b39be762a39e462ec上结帐后,如果我尝试结帐035d1c4e0d4be18bf8f46150072d1c4e0d4,我会得到

warning: refname '035d1c4e0d4be18bf8f46150072d1c4e0d4' is ambiguous.

在每个单独的提交之前,我已经在使用两个命令rm -f .git/index.lockgit branch -D $(git branch --merged | grep -v \* | xargs)(理想情况下,它们应该处理分支问题)。

有解决方法吗?我之前没有遇到过这个问题,所以不确定确切发生了什么。

1 个答案:

答案 0 :(得分:1)

您的分支带有长十六进制名称,这很奇怪。如果您运行git branch,应该会看到类似的内容。

035d1c4e0d4be18bf8f46150072d1c4e0d4
4d04fde758564386fb5d6922a1d4f01970e4e050
af76057dea6c0f395fa2eada0e45dd8c01a4aea6

大概还有一个ID为035d1c4e0d4be18bf8f46150072d1c4e0d4的提交。

如果这是故意的,那么由于您刚刚发现的原因,这不是一个好主意。如果必须这样做,请使用诸如branch/035d1c4e0d4be18bf8f46150072d1c4e0d4之类的前缀来消除分支名称的歧义。

如果这是一个错误,那么您将以提交ID作为名称来创建分支。您可能向后使用git branch的语法。应该是这个。

git branch <name> <branch from>

从提交035d1c4e0d4be18bf8f46150072d1c4e0d4中取消分支将是

git branch thename 035d1c4e0d4be18bf8f46150072d1c4e0d4

可能你在做

git branch 035d1c4e0d4be18bf8f46150072d1c4e0d4 035d1c4e0d4be18bf8f46150072d1c4e0d4

甚至只是

git branch <the current commit>

可能是在某些脚本中的某个地方

git branch $(git rev-parse HEAD)