Bitbucket git repo具有重复的分支,具有不同的内容

时间:2018-11-27 11:32:52

标签: git bitbucket

我不确定如何重现它,或可能如何发生,但是我设法陷入git / bitbucket存储了两个名称重复的分支的情况。

  1. 如果我查看bitbucket的分支下,会看到多个具有相同名称的分支。
  2. git branch --remote中,我只能看到1个名字。
  3. 如果我运行了git fetch,它将始终通知我一个新的分支。
  4. “重复的”分支具有不同的内容,当我运行git fetch时,它会“切换” 分支,这意味着每个我都运行它并在同一个{{ 1}}会显示不同的信息。

我通过从bitbucket中删除分支来解决此问题,只保留其中一个(好的)。我对这可能如何发生感兴趣?是来自git还是bitbucket?

1 个答案:

答案 0 :(得分:2)

您正在处理区分大小写的问题。 Atlassian Bitbucket(尤其是Atlassian Bitbucket Cloud)通常在Linux上运行,Linux具有区分大小写的文件系统,但是您需要将其签入Windows,因为它不区分大小写(至少对于我们在Windows上关注的内容)文件系统级别)。

由于Git将引用(refs)存储在文件系统中,所以分支遵循相同的规则(分支是ref的一种)。

在Bitbucket上,您可以有两个分支feature/Compat_Fixesfeature/Compat_fixes(注意“修复”中“ F”的大小写差异)。当您将其签到Windows机器时,git将首先获取其中一个,然后稍后用另一个覆盖(f = F)。

每次您运行抓取操作时,Git都会交换您的引用(ref)列表,以与遥控器进行比较。 Bitbucket将看到您丢失了一个,并将其发送给您。然后,您本地的git会很高兴用新的ref覆盖您的ref。在下一次获取时,整个过程将与另一个分支一起发生。

重命名分支之一,删除其中一个分支或将其合并到Bitbucket上将解决此问题。

偶然地,这也可能发生在您的工作目录中的文件中。

  

除了Windows或Mac OS(X)系统具有不区分大小写的文件系统外,这同样适用于不能处理Git的所有二进制编码与字符编码以及文件系统本身的文件系统(请参见“ git-branch”联机帮助页的小节,该小节靠近标记为 Discussion 的末尾)。