Git 警告:refname 'xxx' 不明确

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/28192422/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-19 10:43:01  来源:igfitidea点击:

Git warning: refname 'xxx' is ambiguous

gitgit-merge

提问by Nande kore

I have two branches 'master' and 'develop', I create a new branch from master that 'hotfix-1' and then I merge 'hotfix-1' back to master with ;

我有两个分支 'master' 和 'develop',我从 master 'hotfix-1' 创建了一个新分支,然后我将 'hotfix-1' 合并回 master ;

git checkout master
git merge --no-ff hotfix-1

Created a tag for this point;

为此点创建了一个标签;

git tag -a hotfix-1 -m ""

and then I switched back to develop branch from master and merge 'hotfix-1' with ;

然后我切换回 master 的开发分支并将“hotfix-1”与 ;

git checkout develop
git merge --no-ff hotfix-1

after merging 'hotfix-1' to develop I'm getting "warning: refname 'hotfix-1' is ambiguous"message and it's successfully merging my changes to developtoo.. should I worry about anything ?

合并 'hotfix-1' 以进行开发后,我收到“警告:refname 'hotfix-1' 不明确”消息,并且它也成功地合并了我的更改以进行开发......我应该担心什么吗?

Edit

编辑

git show-ref --heads --tags

d97bfc563749918799d4659c43f7bffd29cf4d60 refs/heads/develop
594ea85c94f8321d372779ed3dbd5df07bdb059b refs/heads/master
ffc897f8ab19510d5ff4c67969d0f0cb97d1c4f3 refs/tags/beta-1.0
490a8c80ecec70fd2268aa0c2ad7a9beb6bf491c refs/tags/beta-1.1
644adadb43744ad1d2e0f13fc37abb6906520f8f refs/tags/hotfix-1.0.1
4c49e8d9ddc8d601ed794f307e1c29acfc84b31b refs/tags/release-1.0

回答by Joseph K. Strauss

From your original question it looks like you have a tag and a branch named hotfix-1. Of course, their actual names are refs/tags/hotfix-1and refs/heads/hotfix-1respectively, but Git allows you to use the shorthand, which in this case is ambiguous since Git allows you to use any committishin the git mergestatement. In fact, when I tested this scenario, Git merged the tag, and not the branch.

从您最初的问题来看,您似乎有一个标签和一个名为hotfix-1. 当然,它们的实际名称分别是refs/tags/hotfix-1refs/heads/hotfix-1,但 Git 允许您使用速记,在这种情况下这是不明确的,因为 Git 允许您在语句中使用任何committishgit merge。事实上,当我测试这个场景时,Git 合并了标签,而不是分支。

When looking at your git show-ref --heads --tagsoutput it is unclear, though, since there only a tag named hotfix-1.0.1, and no branch with the same name. It looks like you may have changed things subsequently.

但是,在查看您的git show-ref --heads --tags输出时并不清楚,因为只有一个名为 的标签hotfix-1.0.1,而没有同名的分支。看起来您随后可能已经改变了一些事情。

回答by Ben Butzer

Here's an example where what Joseph's assumption about what happened actually happened to us.

这是一个例子,约瑟夫对所发生的事情的假设实际上发生在我们身上。

git merge BranchyBranch_r2.1 warning: refname 'BranchyBranch_r2.1' is ambiguous.

git merge BranchyBranch_r2.1 warning: refname 'BranchyBranch_r2.1' is ambiguous.

There actually is both a tag and a branch of the same name (BranchyBranch_r2.1), and on top of that, someone tried to alleviate the problem by aliasing the tag that duplicated the branch.

实际上有一个标签和一个同名的分支(BranchyBranch_r2.1),除此之外,有人试图通过给复制分支的标签添加别名来缓解这个问题。

git show-ref --heads --tags ac729d902578378557f9f20dbd415c5748a23230 refs/heads/BranchyBranch_r2.1 9f3d242e03837fd33f8355005e9edbee89367bef refs/heads/develop 5995987876e6a2315544bd774b546ed561f78a53 refs/heads/master df26c94be018268e2897807c0750b5c66150750b refs/tags/BranchyBranch_r2.1 df26c94be018268e2897807c0750b5c66150750b refs/tags/BranchyBranch_r2.1Tag

git show-ref --heads --tags ac729d902578378557f9f20dbd415c5748a23230 refs/heads/BranchyBranch_r2.1 9f3d242e03837fd33f8355005e9edbee89367bef refs/heads/develop 5995987876e6a2315544bd774b546ed561f78a53 refs/heads/master df26c94be018268e2897807c0750b5c66150750b refs/tags/BranchyBranch_r2.1 df26c94be018268e2897807c0750b5c66150750b refs/tags/BranchyBranch_r2.1Tag

If you refer to the branch by its fully qualified name, then you can proceed.

如果通过完全限定名称引用分支,则可以继续。

git merge refs/heads/BranchyBranch_r2.1

git merge refs/heads/BranchyBranch_r2.1