gpt4 book ai didi

windows - 如何使 "git branch"遵守 Linux 上的 "core.ignorecase"标志?

转载 作者:IT王子 更新时间:2023-10-29 00:08:55 26 4
gpt4 key购买 nike

我们正在使用位于办公室 Linux 服务器上的远程 Git 存储库。所有客户端都是安装了 Git Extensions 作为客户端(使用 msysgit 运行)的 Windows PC。

在客户端系统上,如果我尝试执行以下操作:

git branch Branch1
git branch branch1

第二个命令将失败,告诉我同名的分支已经存在。这正是我所期望的,因为我在 git config 中将 core.ignorecase 设置为 true。

但是,如果我直接登录到 Linux 系统并运行相同的命令,即使 core.ignorecase 标志设置为 true,也会创建两个分支。

我原以为第二个命令也会失败,因为我将存储库配置为忽略大小写,但要么该标志在 Linux 系统上不执行任何操作,要么我错过了一些东西。

任何人都可以帮助我理解这个问题,因为我们计划很快将我们的 SCM 从 Source Safe 迁移到 Git,这个问题让我们很害怕。如果两个开发人员创建名称相同但大小写不同的分支并将结果推送到 Linux 存储库,会发生什么情况?

最佳答案

我想在@meagar 的回答中添加更多细节:

FAT32/NTFS 是 case-preserving文件系统。也就是说,如果您将文件命名为“Foo.txt”,它将被存储为“”Foo.txt”。如果您将文件另存为“foo.txt”,它将被存储为“foo.txt”。但是由于不区分大小写,“Foo.txt”和“foo.txt”实际上是相同的,您不能将两个文件放在同一目录中。

在 Windows 中的存储库中,如果您将名称从“Foo.txt”更改为“foo.txt”,并且如果您不通过 git 将其显示为更改,则可以设置 core.ignorecase 配置为 true,git 不会将其视为更改。如果你将它设置为 false,它就会。 (但由于文件系统和 git 的性质,它看起来像是添加了一个新文件 foo.txt,这在 Windows 上增加了困惑)。

这就是 core.ignorecase 的目的

来到分行。分支只是指向提交的指针。这些指针只是文件。这些文件存储在 .git/refs/heads 中。当你创建一个分支时,比如 bar,一个名为 .git/refs/head/bar 的文件被创建。现在,在 Linux 中,当您创建一个名为 Bar 的分支时,它可以继续创建一个文件 .git/refs/head/Bar 并因此允许创建分支。但是在 Windows 上,您无法创建 .git/refs/head/Bar ,因此当 bar 存在时您将无法创建 Bar 分支。意识到 core.ignorecase 与您的存储库中的文件有关 - 您的代码库 - 并且对 git 的元数据文件没有影响。

因此您将不得不忍受并适应这样一个事实,即在 Linux 中,您可以创建名称相同但大小写不同的分支,但在 Windows 中,您不能。

关于windows - 如何使 "git branch"遵守 Linux 上的 "core.ignorecase"标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8439432/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com