Git扩展使用默认设置推送(*:refs/heads/*)会弄乱所有分支 问题
这听起来像是一个GitExtensions bug,对它来说。我认为,当您有一个包含多个分支的裸存储库时,问题就会出现。如果你按下,你会得到一个警告,如果你选择忽略,你会发现混乱的分支。或者取决于你如何推动它,甚至警告都没有出现,到处都是厄运 假设我们有两个本地分支,分别称为Git扩展使用默认设置推送(*:refs/heads/*)会弄乱所有分支 问题,git,git-branch,git-push,git-extensions,git-gc,Git,Git Branch,Git Push,Git Extensions,Git Gc,这听起来像是一个GitExtensions bug,对它来说。我认为,当您有一个包含多个分支的裸存储库时,问题就会出现。如果你按下,你会得到一个警告,如果你选择忽略,你会发现混乱的分支。或者取决于你如何推动它,甚至警告都没有出现,到处都是厄运 假设我们有两个本地分支,分别称为master和另一个。以及为推送设置的默认origin。经过定期推送,我们还可以找到原点/主控和原点/另一个,仅此而已 但是在注定失败的推送之后,我们会发现重复的origin/master和origin/otherpluso
master
和另一个
。以及为推送设置的默认origin
。经过定期推送,我们还可以找到原点/主控
和原点/另一个
,仅此而已
但是在注定失败的推送之后,我们会发现重复的origin/master
和origin/other
plusorigin/refs/heads/master
,这也是重复的。每增加一个分支。它是什么的,我们也不用
事实上,在这种情况发生之后,我们甚至不能简单地推而不出错!(是的,当然是使用windows)
当使用git branch-r
列出分支时,问题变得非常明显
修理它
我们需要这样做:
手动删除origin
中的refs/heads
文件夹。有些时候,它只工作于git push origin:
,有些时候,我们需要更健壮地直接进入文件夹。这是艰难的一步,主要问题发生在那些不起作用的时候
,以便将原点更改带到本地
最终检查所有客户端并使用git远程更新
。如果需要,一个接一个地或通过任何方式移除相同的分支,例如,再次将它们牢固地直接放入文件夹中。在这一步骤中,有时还有另一个问题,我还无法诊断
频率
对我们来说,这是一个明确的事实。尽管我还没有做过很多实验来了解到底是什么导致了它,但它确实发生在使用此repo的5台机器中的任何一台机器上,除了bare
之外,所有机器都以相同的方式配置
每次它发生的时候,我都得跑去看看如何修复它。这次我决定把它记录下来,因为我在网上找不到足够具体的东西
为什么?
这里的问题是:为什么会发生这种情况,以及如何预防它?这是公平的吗?在我们这边,只有在GitExtensions中,这种情况才会发生。在处理另一个更简单的rep时,意外地(也是巧合地,最终)发现了罪犯
在.git/config
下,我们有两行代码用于[远程“源站”]
:
只需将此项添加到顶部即可解决所有问题:
push = *:* # hack for git extensions
最初,这两行代码的原因是“将所有内容推送到服务器”,包括标签和标题
我相信,不知何故,GitExtensions阅读了这些内容,并以错误的方式更改了自己的默认行为(为什么它只获得了第一个设置的正确一面?),从而在每次推送时都有效地做到了这一点:
> git push origin *:refs/heads/*
孩子,我要告诉你,清理那些乱七八糟的东西可不是一件简单的事
已解决。您的参考规范看起来可疑。这不应该是+refs/heads/*:refs/remotes/origin/*
?@knittl我不确定,还没有在命令行上尝试过。我已经有足够多的问题,我不能妥善解决,因为它是。但这就是Git扩展在两个不同的输入字段中显示的内容:*
,然后是refs/heads/*
push = *:* # hack for git extensions
> git push origin *:refs/heads/*