我正在做一个git rebase
,我被卡住了,因为在一个提交中我有一个名为 的文件夹Proto
,但在另一个提交中我有一个名为proto
. 这是一个诚实的错误,Proto
在这两种情况下都应该如此。我能想到的最好的办法是尝试从两个提交中删除该文件夹,然后再次尝试变基,但必须有更好的方法。
过去,当我遇到文件大小写问题时,我使用过 git mv,但是使用文件夹它不会让我运行 git mv,我不知道为什么。
在 Windows 上修复 git 中的文件夹大写问题的正确方法是什么?
我正在做一个git rebase
,我被卡住了,因为在一个提交中我有一个名为 的文件夹Proto
,但在另一个提交中我有一个名为proto
. 这是一个诚实的错误,Proto
在这两种情况下都应该如此。我能想到的最好的办法是尝试从两个提交中删除该文件夹,然后再次尝试变基,但必须有更好的方法。
过去,当我遇到文件大小写问题时,我使用过 git mv,但是使用文件夹它不会让我运行 git mv,我不知道为什么。
在 Windows 上修复 git 中的文件夹大写问题的正确方法是什么?
当大量文件移动到不同的目录时,我们在 Windows 上的 git 存储库中遇到了类似的问题。
我第一次手动修复了我们的问题,方法是将存储库克隆到 Linux VM 并使用git mv
命令运行 bash 脚本来修复文件路径问题。这是一个痛苦的过程,所以我决定开发一个工具来自动化这个过程。
Git Unite是我使用libgit2sharp库编写的一个 .NET 控制台应用程序。该程序识别所有 git 索引条目,其文件路径大小写与 Windows 文件系统报告的不同。
我在Git Unite - Fix Case Sensitive File Paths on Windows 上写了一篇博文,详细介绍了工具、用法和背后的历史
将文件夹重命名到 Git 历史记录中很困难,因为不跟踪文件夹——只跟踪文件夹中的文件。假设您想重命名oldFolder
为oldfolder
您可以尝试以下操作:
从您第一次在oldFolder
. 编辑将文件添加到此文件夹的每个提交。当交互式变基停止时,创建newFolder
并执行git mv oldFolder/* newFolder/
. 为交互式变基的每次停止执行后者。
显然,您不能在 Windows 中拥有oldFolder
并且newFolder
是同一个单词的两个不同大写版本。因此,重复步骤 1 以重命名newFolder
为oldfolder
.
git config --global core.ignorecase true
应该可以解决您在 Windows 上的问题。
[已编辑]我怀疑您需要将文件夹中的每个文件“git mv”到一个临时名称,如“ProtoX”,然后将临时命名的文件“git mv”到“Proto”,因为 Git 不会自行跟踪文件夹 - - 仅文件夹中的文件。
双“git mv”适用于 Windows 不区分大小写的文件系统。(您应该能够在区分大小写的文件系统(如 Linux)上直接从 'proto' 移动到 'Proto'。)