Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git分支在pull中不断地被重新创建_Git_Branch_Pull - Fatal编程技术网

git分支在pull中不断地被重新创建

git分支在pull中不断地被重新创建,git,branch,pull,Git,Branch,Pull,我有一个git分支,每次执行“git pull”时,它都会不断地“重新创建”一个交替的字母大小写。假设分支名称为“a”(或我所知的“a”),一个“git pull”将生成以下行: * [new branch] a -> origin/a 然后下一次“git拉动”将产生: * [new branch] A -> origin/A 这永远不会停止。我不知道这个分支是如何创建的(或者它的用途是什么),因为其他人创建了它 如何驯服此分支并使其停

我有一个git分支,每次执行“git pull”时,它都会不断地“重新创建”一个交替的字母大小写。假设分支名称为“a”(或我所知的“a”),一个“git pull”将生成以下行:

* [new branch]      a       -> origin/a
然后下一次“git拉动”将产生:

* [new branch]      A       -> origin/A
这永远不会停止。我不知道这个分支是如何创建的(或者它的用途是什么),因为其他人创建了它


如何驯服此分支并使其停止此操作?

由于您一直获得[new branch],因此似乎origin/a和origin/a在本地被删除。如果有人或某事正在删除这些引用,那么每次从远程获取(或拉取)时,您都会得到这些分支。您是否尝试重新克隆存储库?您是唯一有此问题的人吗?

如评论中所述,遥控器上同时存在
refs/heads/A
refs/heads/A
。这确实意味着存在两个不同的分支。(Git本身是区分大小写的,大多数非Windows文件系统也是如此。)

但是,如果您使用的是Windows,则可能可以解释此问题。引用被创建为单独的文件,每个引用一个。Git在远程上同时看到这两个文件,但是当它尝试在本地更新它们时,只有一个文件存在,因此始终创建另一个文件。然后,这两个操作的内部顺序必须确保新创建的操作会覆盖另一个操作,从而导致更改

如果引用指向同一个提交,则解决方案是在远程服务器上删除其中一个:

git push origin :refs/heads/A

我刚刚遇到了这个问题。在我的例子中,其中一个分支的名称与另一个分支的名称直接相关,因此我从远程删除了较旧的分支,因为它没有增加任何价值。假设要删除的分支为“a”,则此命令将从远程(名为“原点”)删除该分支:


几次抓取后,问题就消失了(直到其他人再次推它…

我不是唯一一个出现此问题的人。我第一次遇到这个问题时,团队中的其他人遇到了这个问题,并认为重新克隆可以解决这个问题。我不确定他们是否尝试过重新克隆,但克隆成功了。我会知道的。现在我也有同样的问题。我不相信删除是在本地发生的,因为这种情况每次都会发生,即使本地回购协议中没有其他任何事情发生。我可以立即连续执行“git pull”,但每次都会发生这种情况。你在执行pull时有没有git钩子发射?我是git新手。我假设,由于我不知道如何启动git钩子,所以我没有这些钩子,对吗?这个分支(或分支?)是否显示在
git ls remote origin
的输出中?您似乎发现了什么。在这个列表中确实有两个分支。一个是refs/head/a,另一个是refs/head/a。我假设这意味着有人创建了两个大小写不同的分支,而没有注意到,对吗?这也可能发生在Mac OS X上(我复制了它),这里还有一个解决方法(如果其中一个分支不能被删除/重命名):使用Disk Utility创建具有在克隆区分大小写的存储库之前,将其上的“Mac OS Extended(区分大小写,日志)”文件系统(文件>新建>空白磁盘映像…)和
cd
复制到新卷。
git push origin :a