2011-05-16 34 views
10

重建我有一个不断被我每次执行“git的拉”时间“再创造”与交替字母大小写一个Git分支。假设分支的名字是“A”(或“A”对所有我知道的),一个“git的拉”会产生行:的Git分支不断得到上拉

* [new branch]  a  -> origin/a 

再下一个“混帐拉”会产生:

* [new branch]  A  -> origin/A 

这永不停止。我不知道该分支是如何创建的(或者它是如何创建的)。

如何驯服这个分支并使其停止这样做呢?

+1

这个分支(或分支?)是否出现在'git ls-remote origin'的输出中? – Cascabel 2011-05-16 12:39:21

+0

您似乎遇到了某些事情。这个列表中确实出现了两个分支。一个是refs/head/a,另一个是refs/head/A.我认为这意味着有人创建了两个不同情况下的分支,但没有注意到,对吧? – acoward 2011-05-16 15:17:04

回答

7

作为评价所提到的,既refs/heads/Arefs/heads/a存在遥控器上。这确实意味着存在两个不同的分支。 (Git本身区分大小写,因为大多数非Windows文件系统都是如此。)

但是,如果您使用的是Windows,则可能会解释此问题。 Refs被创建为单个文件,每个文件一个。 Git在远程会看到两者,但是当它试图在本地更新它们时,只有一个存在,所以另一个总是被创建。两个操作的内部顺序必须是新创建的一个覆盖另一个,导致交替。

如果裁判都指向同一个commit,那么解决的办法是删除其中一个遥控器上:

git push origin :refs/heads/A 
+0

这也可以发生在Mac OS X(我转载它),也有一个解决方法(如果其中一个分支不能只是删除/重命名):使用*磁盘工具*创建一个磁盘映像与“Mac操作系统扩展(区分大小写,日志式)“文件系统(**文件**> **新**> **空白磁盘映像... **)和'cd'到新卷,然后再克隆区分大小写的存储库。 – 2011-05-17 03:46:17

1

看来,你既然得到[新的分支]所有的时间原点/ a和产地/ A是本地被删除。如果某人或某物正在删除这些引用,那么每当您从远程获取(或拉出)时都会获得这些分支。你有没有尝试克隆仓库?你是唯一有这个问题的人吗?

+0

我不是唯一有这个问题的人。当团队中的其他人遇到这个问题时,我首先遇到了这个问题,并认为重新克隆可以解决这个问题。我不确定他们是否试图重新克隆,并且它消失了。我会发现的。现在我有同样的问题。我不相信本地发生删除,因为每次发生这种情况时,即使在本地回购中没有发生任何其他情况。我可以立即执行'git pull',每次都会发生。 – acoward 2011-05-16 06:49:23

+0

当你拉动时,你有没有任何git挂钩发射? – ralphtheninja 2011-05-16 08:03:11

+0

我是git newb。我认为,因为我不知道如何让git钩子开火,我没有它们,对吧? – acoward 2011-05-16 15:18:38

1

我只是遇到了这个问题。在我的情况下,其中一个分支名称与另一个分支名称直接相连,所以我从远程删除了较旧的分支,因为它没有添加任何值。假设分支删除是“一”,那么此命令将从远程删除(名为“起源”):

git push origin :a 

一对夫妇取的,问题就消失了(直到有人再次推动它。 ..)