合并两个分支时出现了Git合并歧义问题。

4
当我尝试合并几个分支时,我不小心创建了一个分支,而不是合并分支。例如:我通过输入“git branch”检查本地和远程仓库中可用的分支列表。但是我错误地执行了“git branch origin/DEV66”(“origin/DEV66”是我需要与分支“test”合并的分支)。因此,在合并分支“test”和“origin/DEV66”时出现了以下问题。
warning: refname 'origin/DEV_66' is ambiguous.
warning: refname 'origin/DEV_66' is ambiguous.

当输入git branch时,它会显示以下分支。
GRNDEV_893
heads/origin/GRNDEV_893
remotes/origin/GRNDEV_893

如何解决这种歧义,分支heads/origin/GRNDEV_893remotes/origin/GRNDEV_893之间有什么不同。
3个回答

4

heads/ 中的分支是您在此克隆中使用 git branchgit checkout -b 创建的本地分支。 remotes/ 中的分支是“远程跟踪分支”,是从其他克隆中更新的只读副本。当您运行 git fetchgit pull 时。

当您在两者中使用相同名称的分支时,可以通过包含 heads/remotes/ 前缀来消除歧义:

git checkout test
git merge remotes/origin/DEV_66

由于您误创建了heads/origin/DEV_66,您可以按照以下方式删除它:

git branch -d heads/origin/DEV_66

0
如何解决这种歧义,分支heads/origin/GRNDEV_893remotes/origin/GRNDEV_893之间是否有任何不同。
Git 2.23(2019年第二季度)将改进代码以显示具有潜在拼写错误的参数,这些参数无法被解释为提交。

请查看提交2ed2e19提交8ed51b0(2019年5月14日),作者为Jeff King (peff)
(由Junio C Hamano -- gitster --提交8d32d25中合并,2019年6月13日)

help_unknown_ref(): 检查refname的歧义性

当用户要求合并“foo”时,我们建议使用“origin/foo”,我们只需从建议的ref前面简单地去掉“refs/remotes/”即可。

这通常是可以的,但有可能结果名称存在歧义(例如,您也有“refs/heads/origin/foo”)。

让我们使用shorten_unambiguous_ref()来正确处理这个问题,这通常会产生相同的“origin/foo”,但如果需要,也会产生“remotes/origin/foo”。

请注意,在这种情况下可能还有其他选项(例如,我们也可以建议使用“heads/origin/foo”)。我将把这留给辩论;重点是避免给出实际上不符合我们期望的建议。


在Git 2.24中,调用help_unknown_ref()将退出程序。

请参见提交记录80e3658(2019年8月29日),由René Scharfe(rscharfe提交。
(由Junio C Hamano -- gitster --合并于提交记录8e111e4,2019年9月30日)


0

git branch -rv 会显示所有分支,包括远程分支,以及每个分支当前指向的提交。您可以通过查看日志进一步检查每个分支:

git log BRANCHNAME

如果有些分支是相同的,您想要删除它们,可以使用以下方法

git branch -d BRANCHNAME

你不能只是执行 "git log BRANCHNAME" 吗? - justintime
@justintime 是的,谢谢你指出来,我已经编辑了答案! - Ilya Kobelevskiy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接