存在git提交的引用标头,这些引用本身就是单独的提交。例如,有两个提交,例如925ca878bc3c6c264ba5335b39be762a39e462ec
和035d1c4e0d4be18bf8f46150072d1c4e0d4
。
当我做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.lock
和git branch -D $(git branch --merged | grep -v \* | xargs)
(理想情况下,它们应该处理分支问题)。
有解决方法吗?我之前没有遇到过这个问题,所以不确定确切发生了什么。
答案 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)