我不确定如何重现它,或可能如何发生,但是我设法陷入git / bitbucket存储了两个名称重复的分支的情况。
git branch --remote
中,我只能看到1个名字。git fetch
,它将始终通知我一个新的分支。 git fetch
时,它会“切换” 分支,这意味着每个我都运行它并在同一个{{ 1}}会显示不同的信息。我通过从bitbucket中删除分支来解决此问题,只保留其中一个(好的)。我对这可能如何发生感兴趣?是来自git还是bitbucket?
答案 0 :(得分:2)
您正在处理区分大小写的问题。 Atlassian Bitbucket(尤其是Atlassian Bitbucket Cloud)通常在Linux上运行,Linux具有区分大小写的文件系统,但是您需要将其签入Windows,因为它不区分大小写(至少对于我们在Windows上关注的内容)文件系统级别)。
由于Git将引用(refs)存储在文件系统中,所以分支遵循相同的规则(分支是ref的一种)。
在Bitbucket上,您可以有两个分支feature/Compat_Fixes
和feature/Compat_fixes
(注意“修复”中“ F”的大小写差异)。当您将其签到Windows机器时,git将首先获取其中一个,然后稍后用另一个覆盖(f = F)。
每次您运行抓取操作时,Git都会交换您的引用(ref)列表,以与遥控器进行比较。 Bitbucket将看到您丢失了一个,并将其发送给您。然后,您本地的git会很高兴用新的ref覆盖您的ref。在下一次获取时,整个过程将与另一个分支一起发生。
重命名分支之一,删除其中一个分支或将其合并到Bitbucket上将解决此问题。
偶然地,这也可能发生在您的工作目录中的文件中。
除了Windows或Mac OS(X)系统具有不区分大小写的文件系统外,这同样适用于不能处理Git的所有二进制编码与字符编码以及文件系统本身的文件系统(请参见“
git-branch
”联机帮助页的小节,该小节靠近标记为 Discussion 的末尾)。