【发布时间】:2020-01-05 06:21:09
【问题描述】:
我已经在 linux OS 上安装了 bitbucket,一切都运行良好,除非我在 UI 上创建名称为“Branch”和“branch”的分支,然后两个分支都已成功创建,但在 git CLI 上尝试它之后显示错误。
问题 1:- 如何使 bitbucket 存储库中的分支/标签不区分大小写
问题 2:- 幕后实际发生了什么。
【问题讨论】:
我已经在 linux OS 上安装了 bitbucket,一切都运行良好,除非我在 UI 上创建名称为“Branch”和“branch”的分支,然后两个分支都已成功创建,但在 git CLI 上尝试它之后显示错误。
问题 1:- 如何使 bitbucket 存储库中的分支/标签不区分大小写
问题 2:- 幕后实际发生了什么。
【问题讨论】:
问题 1 的答案是您不能。 Git 本身是区分大小写的。这是你的操作系统,或者更具体地说,你的操作系统使用的某些文件系统,那不是。
问题2的答案见:
【讨论】:
就 Git 而言,所有分支和标签名称在设计上都是区分大小写的,所以虽然在某些情况下您可能会不区分大小写地访问分支,但并非在所有情况下都可以,因此最好选择一个约定并坚持下去(通常意味着小写)。
这是因为 Git 经常(但并非总是)在文件系统中存储分支和标签。当它这样做时,如果您计算机上的文件系统也区分大小写,那么这些分支和标签可能会以不区分大小写的方式访问。因此,在 Linux 系统上,这些名称始终区分大小写,而在 macOS 或 Windows 上,它们有时是有时不是。
但是,当您打包存储库时,Git 会将所有分支和标签名称打包到一个文件中,并将它们作为文件删除。在这种情况下,所有这些分支和标签名称都是区分大小写的,即使在不区分大小写的文件系统上也是如此。
同样,您通常可以在适当的文件系统上不区分大小写地使用特殊引用名称 HEAD,但这在各种情况下都会失败,因此不建议这样做。
Git 不允许不区分大小写行为的原因是因为引用名称的编码不需要是 UTF-8,而且大小写折叠通常是一个难题,因此不可能理智地产生一个好的大小写 -不敏感的行为。
【讨论】: