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

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

git mv -f confvars.sh ConfVars.sh
git commit -am 'test filename case change'
git format-patch -M -1 HEAD

但是当我尝试应用该补丁时,我收到一个错误:

git apply 0001-test-filename-case-change.patch
> error: ConfVars.sh: already exists in working directory

如何在不抛出错误的情况下应用此补丁?

**编辑**

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

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

您可能有三种选择,具体取决于您所需的疼痛程度:

>将修补程序应用于区分大小写的文件系统,并将结果提交到您的存储库中.
>手动编辑补丁,将生成的文件名更改为存储库中的不同(例如TEMPORARY-FILE-CHANGE-ME),然后在应用补丁后将文件重命名为所需的文件
>报告此错误,并希望有人在您放弃并手动对存储库进行这些更改之前真正关心它

点赞