在git合并代码库时,如何处理标签冲突?

4

我正在使用read-tree合并三个git仓库。出现了标签名称冲突。是否有一种方法可以在冲突时从远程'fetch'并映射标签名称?

1个回答

3
是的,有点像(所以也许“不行”更准确,但你可以通过努力得到你想要的)。也就是说,没有办法进行条件标记映射,但很容易进行总是标记映射。
当您运行git fetch remote(不使用--tags)时,git fetch会使用remote.remote.fetch下的配置条目来控制获取哪些引用名称。 当您运行git fetch remote --tags时,它的行为就好像在命令行上给出了refs / tags / *:refs / tags / *,或者等同地将所有条目临时替换为那一个单个refspec。
看一下分支的实际refspec,您会发现,例如,remote.origin.fetch设置为+refs/heads/*:refs/remotes/origin/*。 +导致强制更新(即使结果不是快速转发),其余部分将远程的refs/heads/master复制到您的本地refs/remotes/origin/master(如果需要,则创建它)。
标签驻留在refs / tags /名称空间中(与分支位于refs / heads /中,远程分支位于refs / remotes /中)。 没有“远程标签”这样的东西,但您可以创造它,就像以前没有“注释”这样的东西,现在有一个refs / notes /名称空间一样。
git config --add remote.origin.fetch 'refs/tags/*:refs/rtags/origin/*'

将一行内容添加到配置文件中的remote.origin.fetch,使得git fetch origin会将远程仓库的标签带回来,但是会将它们存储在新的“remote tags”名称空间中。完成fetch操作后(并运行其他远程仓库的fetch操作),您可以为任何出现在refs/rtags/*中的内容进行自定义映射。
1假设您没有设置为镜像。

这是一个很好的答案,谢谢。你能帮我理解如何处理上游仓库中标签冲突吗?我的问题在这里 - Shaul Behr

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