git分支在pull中不断地被重新创建
我有一个git分支,每次执行“git pull”时,它都会不断地“重新创建”一个交替的字母大小写。假设分支名称为“a”(或我所知的“a”),一个“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 这永远不会停止。我不知道这个分支是如何创建的(或者它的用途是什么),因为其他人创建了它 如何驯服此分支并使其停
* [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