windows - GitHub 分支 : Case-Sensitivity Issue?

标签 windows git github branch case-sensitive

由于远程上的某些分支,我似乎遇到了存储库不断在本地重新创建分支的问题。我在 Windows 机器上,所以我怀疑这是一个区分大小写的问题。

这是一个示例夫妇命令:

$ git pull
From https://github.com/{my-repo}
 * [new branch]          Abc -> origin/Abc
 * [new branch]          Def -> origin/Def
Already up to date.

$ git pull -p
From https://github.com/{my-repo}
 - [deleted]             (none)     -> origin/abc
 - [deleted]             (none)     -> origin/def
 * [new branch]          Abc -> origin/Abc
 * [new branch]          Def -> origin/Def
Already up to date.

当做 git pull ,有问题的分支是大写的。当我做 git pull -p (用于修剪),它首先尝试删除分支的小写版本,然后创建大写版本。

远程分支大写( origin/Abcorigin/Def )。

我试图临时更改我的 Git 配置,以便 ignorecase=false (目前是 ignorecase=true )。但我注意到行为没有变化。我猜我的一端有一些本地的东西目前正固定在那些小写的分支上。但是git branch不会在本地显示这些分支的任何版本。

如果没有完全清除存储库(尝试 pull/取时,单独文件夹中的新 git clone 不会 pull 出这些幻影分支),我能做些什么吗?

最佳答案

在 Git 上,分支只是指向提交的指针。分支存储为您的 .git 上的纯文件存储库。

例如,您可能有 abcdef .git/refs/heads 上的文件.

$ tree .git/refs/heads/
.git/refs/heads/
├── abc
├── def
└── master

这些文件的内容只是分支指向的提交号。

我不确定,但我认为选项 ignorecase仅与您的工作目录相关,而不是 .git文件夹。因此,要删除奇怪的大写分支,您可能只需要删除/重命名 .git/refs/heads 中的文件。 .

除此之外,从本地分支到远程分支的上游链接存储在 .git/config 上。文件。在此文件中,您可能有以下内容:
[branch "Abc"]
        remote = origin
        merge = refs/heads/abc

请注意,在此示例中,远程分支名为 Abc但本地分支是 abc (小写)。

为了解决您的问题,我会尝试:
  • 修改.git/config文件
  • 重命名 .git/refs/heads 中损坏的分支如 abc更名 abc-old
  • 试试你的 git pull
  • 关于windows - GitHub 分支 : Case-Sensitivity Issue?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55051729/

    相关文章:

    git - 如何撤消 GitHub Desktop 中的放弃更改?

    git - 如何将一个 git 仓库中的目录镜像到另一个 git 仓库中?

    c - 通过随机重命名覆盖 Windows 中的文件失败

    c - 需要帮助在 Windows 上严重重定向计时器程序的输入和输出

    git tfs : How to rcheckin git commits when there is another checkin in tfs?

    git - 我如何处理 Git 存储库中的图像?

    emacs - 你如何刷新Magit中的 Remote ?

    windows - 在 XP 中如何查看哪些进程/程序正在通过互联网发送/接收数据?

    c# - 包含 WinAPI (Win8) 组件的 WPF 应用程序

    git:如何从项目中分离出库?过滤器分支,子树?