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

问题描述 投票:4回答:2

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

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 filenames case-sensitive
2个回答
2
投票

这似乎是一个错误 git-apply 其中,它无法处理在不区分大小写的文件系统上的大小写重命名。 不幸的是,即使补丁中包含了对内容的添加和删除,而不仅仅是重命名,也是如此。 (所以省略了 -M 旗帜鲜明 git-format-patch 是无益的)。)

看起来你有三个选择,取决于你想要的痛苦程度。

  1. 在大小写敏感的文件系统上应用补丁,并将结果提交到你的版本库中。
  2. 手动编辑补丁,修改结果的文件名,使其在你的版本库中是不同的(例如 TEMPORARY-FILE-CHANGE-ME),然后在应用补丁后将文件改名为你想要的名字。
  3. 报告这个bug,并希望有人真正关心并修复它,然后你才会放弃,并手动对你的版本库进行这些修改。

0
投票

如果您正在运行Windows 10(>= 1803,2018年4月),您可以通过键入以下命令(可能需要管理员权限)启用NTFS大小写敏感性。

fsutil.exe file setCaseSensitiveInfo C:\SampleFolder enable

现在,git apply命令应该可以工作了。

备注 现有的子文件夹不受影响。

© www.soinside.com 2019 - 2024. All rights reserved.