我有一组非常简单的 git 命令,它们会导致一些奇怪的行为:
显示我当前的本地分支,并看到我在 release/beta1
上:
$ git branch
develop
master
* release/beta1
从 release/beta1
创建一个 bugfix/somefeature
分支:
$ git checkout -b bugfix/somefeature
Switched to a new branch 'bugfix/somefeature'
到目前为止还不错吧?好吧,再给我看看本地的分支机构:
$ git branch
BUGFIX/somefeature
问题:
- 为什么我的分支的
bugfix
前缀变成了大写的BUGFIX
? - 相关的,为什么没有用星号标记为我当前的分支?
我在 OS X 10.8.2 上通过 Homebrew 使用 git 版本 1.8.1.5,无论有没有我非常温和的 ~/.gitconfig
都会发生这种情况。似乎每个 bugfix/...
分支都会发生这种情况。
最佳答案
分支以文件的形式存储在.git
目录中。单个分支是一个文件,其中包含分支指向的提交对象的哈希值。
因此,正如您可能猜到的那样,在创建分支 foo/bar
时,这将对应于包含文件的目录。所以 Git 将创建一个文件夹 foo
和一个文件 bar
然后指向提交。
这意味着当您添加另一个分支 foo/baz
时,它将创建一个文件 baz
并将其添加到文件夹中。
现在对于不区分大小写的文件系统,分支名称不区分大小写。这意味着 FOO/bar
和 foo/bar
是相同的。但实际的内部 名称取自原始文件夹和文件名。因此,当您的 bugfix
分支类别的文件夹以大写字母书写时,分支将被识别为大写字母 BUGFIX
。
要解决此问题,只需进入 .git/refs/heads
并将文件夹名称更改为您喜欢的方式即可。
关于git - 为什么 git 将我的分支名称前缀大写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15371866/