Git没有在当前本地分支旁边显示星号

3

我刚接触git,遇到了一个很困惑的情况。

总之,我难以理解分支名称的大小写敏感性。例如,我在主分支上创建了一个名为AP-1025的新分支,命令为git checkout -b AP-1025。现在我可以执行git branch,看到星号在AP-1025旁边,证明我在AP-1025分支上。

现在假设我对AP-1025进行了一些更改,提交了它们,并使用git checkout master切换回主分支。我又回到了主分支,一切都好。但是如果我现在执行git checkout ap-1025(注意小写字符和没有-b,这意味着没有创建新分支),它会告诉我已经切换到ap-1025,但是这一次当我执行git branch时,AP-1025旁边没有星号,也没有任何一个分支有星号。

我的困惑在于git允许我执行git checkout ap-1025而不抱怨缺少分支,因此我认为分支名称不区分大小写。但是git branch并未指示我真正处于AP-1025分支上,这表明分支命名/命令的某些部分是大小写敏感的。

那时我真的在AP-1025上吗?为什么git branch没有显示任何带星号的分支?这是git branch命令中的错误吗?

非常感谢任何指点。

1个回答

4

我猜你在使用Windows系统。Git将分支存储为磁盘上的文件。而分支名称以名称的形式存储在HEAD引用中。在Windows上,如果你创建了一个名为AP-1025的文件,后来却以ap-1025的形式打开它,就会导致git出现错误行为,因为实际上它们的名称是不同的,但Windows允许打开文件读取分支信息。


啊,是的,我应该说明一下我正在使用 Windows 7,通过 cmd 使用 git,git bash 似乎也以同样的方式运行。我想唯一避免这种混淆的方法就是始终在使用 Windows 上的 git 时考虑分支名称的大小写敏感性? - J. Schei
@J.Schei 请务必考虑大小写敏感性。在Linux上,它将会失败(找不到分支),在Windows上则会出现错误。 - kan
有什么办法可以解决这种情况吗? - tester.one
2
@Robert 不确定,但值得尝试 git gc,它应该将分支打包成一个特殊的文件作为内容,而不是文件名,这样可能会解决问题。如果不行 - 只需删除该分支并使用正确的大小写创建即可。 - kan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接