【问题标题】:Git Extensions Push with default settings (*:refs/heads/*) messes up all branches使用默认设置 (*:refs/heads/*) 的 Git 扩展推送会弄乱所有分支
【发布时间】:2012-08-26 12:14:26
【问题描述】:

问题

这听起来像是一个 GitExtensions 错误,I couldn't find specific info.我相信当您拥有一个包含 1 个以上分支的裸存储库时,就会出现问题。如果你再推,你会得到一个警告,如果你选择忽略你会发现混乱的分支。或者取决于你如何推动它,甚至没有出现警告,它无处不在!

假设我们有 2 个本地分支机构,分别名为 masteranother。并且默认的origin 设置为推送。定期推送后,我们还会找到origin/masterorigin/another,仅此而已。

但在注定的推送之后,我们会发现重复的origin/masterorigin/another 加上origin/refs/heads/master,这也是重复的。对于每一个额外的分支。它是not like we're pushing all branches 什么的,我们也没有使用Multiple Branches feature

事实上,发生这种情况后,我们甚至不能简单地push 没有错误! (是的,当然使用 windows)

Pushing to \\\server\git\repo
error: dst refspec refs/heads/another matches more than one.
error: failed to push some refs to '\\\server\git\repo'

当使用git branch -r 列出分支时,问题变得很明显。

修复它

我们需要这样做:

  1. 手动删除origin 中的refs/heads 文件夹。有时它只工作usinggit push origin :<branchName>,其他时候我们需要更健壮并直接进入文件夹。这是困难的一步,主要问题发生在那些不起作用时...
  2. git fetch -p,用于将原点更改带到本地。
  3. 最终通过所有客户端并使用git remote update。如果需要,可以一个一个地或通过任何方式删除相同的分支,例如再次健壮地直接进入文件夹。在这个步骤中,有时我还无法诊断出另一个问题。

频率

对我们来说,这是一个既定事实。尽管我没有做很多实验来了解它的确切原因,但它确实发生在使用这个 repo 的 5 台机器中的任何一台上,除了bare 之外,所有机器的配置方式都相同。

每次发生这种情况时,我都必须运行并找出解决方法。这次我决定把它记录下来,因为我在网上找不到足够具体的东西。

为什么

这里的问题是:为什么会发生这种情况,以及如何预防?甚至是GitExtensions fault only?在我们这边,这种情况肯定会发生,只有在 GitExtensions 中的这种特定场景下才会发生。

【问题讨论】:

  • 您的 refspec 看起来很可疑。不应该是+refs/heads/*:refs/remotes/origin/*吗?
  • @knittl 我不确定,没有在命令行上尝试过。我有足够多的问题无法按原样正确解决。但这就是 Git 扩展在 2 个不同的输入字段中显示的内容:*,然后是 refs/heads/*

标签: git git-branch git-push git-extensions git-gc


【解决方案1】:

在与另一个更简单的rep打交道时,意外(也是巧合最终)发现了罪魁祸首!

.git/config 下,[remote "origin"] 有这两行:

push = refs/heads/*:refs/heads/*
push = refs/tags/*:refs/tags/*

只需将此添加到顶部,即可解决所有问题:

push = *:* # hack for git extensions

两行一开始的原因是“将所有内容推送到服务器”,包括标签和头部。

我相信,不知何故,GitExtensions 会以错误的方式读取这些内容并更改其自己的默认行为(为什么它会恰好在第一个设置的右侧?),因此在每次推送时都有效地这样做:

> git push origin *:refs/heads/*

男孩,我要告诉你,收拾烂摊子可不是一件简单的事!

解决了。

【讨论】:

    猜你喜欢
    • 2020-10-22
    • 1970-01-01
    • 2019-10-26
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 2016-06-24
    • 2017-12-07
    相关资源
    最近更新 更多