如何在包含文件名大小写更改的 Git 中应用补丁?

Mar*_*tyn 5 git filenames case-sensitive

我创建了一个补丁,其中包含文件名大小写更改:

git mv -f confvars.sh ConfVars.sh
git commit -am 'test filename case change'
git format-patch -M -1 HEAD
Run Code Online (Sandbox Code Playgroud)

但是当我尝试应用该补丁时,出现错误:

git apply 0001-test-filename-case-change.patch
> error: ConfVars.sh: already exists in working directory
Run Code Online (Sandbox Code Playgroud)

如何应用此补丁而不引发错误?

**编辑**

为了澄清上面的例子:当应用补丁时,文件 ConfVars.sh 不存在,文件 confvars.sh 确实存在,我希望它被重命名,而是显示上述错误。

Edw*_*son 5

这似乎是一个错误,git-apply它无法处理不区分大小写的文件系统上的大小写更改重命名。不幸的是,即使补丁包含内容的添加和删除,而不仅仅是重命名,情况也是如此。(因此省略-M标志 togit-format-patch是没有帮助的。)

您似乎有三种选择,具体取决于您想要的疼痛程度:

  1. 在区分大小写的文件系统上应用补丁并将生成的提交拉入您的存储库。
  2. 手动编辑补丁,将生成的文件名更改为在存储库中不同(例如TEMPORARY-FILE-CHANGE-ME),然后在应用补丁后将文件重命名为您想要的名称
  3. 报告此错误并希望有人真正关心并在您放弃并手动对存储库进行这些更改之前修复它