在windows中创建一个具有不同caplitalization的新分支

时间:2015-01-20 17:26:33

标签: windows git

我可以在Windows上创建一个分支,其分支大小与现有分支不同。但是Windows无法处理具有不同情况的分支。这是git中的错误吗?

以下是详细信息:

我是git的新手。假设我使用windows git命令行克隆远程存储库。

$git clone remoteURL local

现在,如果我列出分支,我会得到类似的东西:

$git branch --all
master
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/foo

我现在可以做到:

$git branch FOO

并且git会成功,我得到:

$git branch --all
FOO
master
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/foo

如果我然后将FOO推送到远程存储库,我现在有两个具有相同名称的分支,但不同的大小写,Windows上的git不喜欢,也不适合。

这让我感到很害羞。是吗?或者有什么我想念的东西。

1 个答案:

答案 0 :(得分:1)

要弄清楚为什么Windows抱怨要更多地了解Git如何管理分支机构。

Git中的分支基本上是.git/refs内的文本文件,其中包含代表该分支尖端的Commit SHA。 Git中的分支名称转换为硬盘上的文本文件。

  • 分支:foo
  • 文件:.git / refs / heads / foo

  • 分支:foo / bar

  • 文件:.git / refs / heads / foo / bar

Windows上的文件名和文件路径不区分大小写。如果远程Git存储库位于Mac OS或Linux上,则文件路径在这些操作系统上区分大小写。一个名为“foo”的分支和另一个名为“FOO”的分支与这些操作系统上的Git不同。

远程服务器听起来像是一个Linux机器。在Windows上,名为“foo”和“FOO”的分支将映射到相同的文件路径:.git/refs/heads/foo而不是Git期望的两个不同分支。