由于远程上的某些分支,我似乎遇到了存储库不断在本地重新创建分支的问题。我在 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/Abc
和 origin/Def
)。我试图临时更改我的 Git 配置,以便
ignorecase=false
(目前是 ignorecase=true
)。但我注意到行为没有变化。我猜我的一端有一些本地的东西目前正固定在那些小写的分支上。但是git branch
不会在本地显示这些分支的任何版本。如果没有完全清除存储库(尝试 pull/取时,单独文件夹中的新
git clone
不会 pull 出这些幻影分支),我能做些什么吗?
最佳答案
在 Git 上,分支只是指向提交的指针。分支存储为您的 .git
上的纯文件存储库。
例如,您可能有 abc
和 def
.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/