【问题标题】:Git: rename directory (case-only) on WindowsGit:在 Windows 上重命名目录(仅区分大小写)
【发布时间】:2016-08-16 10:59:58
【问题描述】:

我想在 Windows 系统上重命名由 Git 版本控制的目录(更改目录名称的大小写):

$ git mv docs DOCS
Rename from 'docs' to 'DOCS/docs' failed. Should I try again? (y/n) n
fatal: renaming 'docs' failed: Permission denied

我也尝试过使用 force-option - 但结果相同:

$ git mv --force docs DOCS
Rename from 'docs' to 'DOCS/docs' failed. Should I try again? (y/n) n
fatal: renaming 'docs' failed: Permission denied

由于某种原因,Git 失败了,因为它认为 DOCS 已经是一个现有目录,并且应该将目录移到其中。我知道我可以使用临时目录名重命名和提交,然后重命名和修改提交到最终名称,但是没有办法告诉 Git 我不想移动到任何其他目录中吗?

【问题讨论】:

    标签: windows git rename


    【解决方案1】:

    您可以尝试分两步进行。

    $ git mv docs DOCS2
    $ git mv DOCS2 DOCS
    

    会有用的

    【讨论】:

    • 为什么 git 不能在内部做这个?
    • Git 最初是为在基于 Linux 的系统上工作而设计的,它区分大小写。窗户不是。在 Windows 中,不可能在同一位置有 2 个名称为“ABC”和“abc”的文件夹。问题不在于 git per say,同样的行为也发生在 SVN 或 Windows 下没有明确解决该问题的任何其他应用程序上。问题出在操作系统上。
    • 问题不在于操作系统,因为 Windows 可以将目录从 docs 重命名为 DOCS 或 Docs。这是工具不支持不区分大小写、保留大小写的文件系统的问题。
    • 我的意思是操作系统在检查目标文件是否已经存在时反应不同。
    • 恕我直言,你可能会争辩说 git 已经不得不在 Windows 上做不同的事情了。我同意当您在 Windows 中重命名文件时 git 检测到更改存在问题,但如果您使用 git mv 它应该可以工作。我认为开发人员更有可能根本没有兴趣为此实施特殊情况。这更像是“我们来自 Linux,这就是它的工作方式”。
    【解决方案2】:

    由于 windows 区分大小写,您无法将文件重命名为相同的字母。 (Docs == docs [忽略大小写])

    您可以从git bash 执行此操作,因为 git bash 是 cygwin 并且它区分大小写,因为它是一个 unix 模拟器。

    命令是 git mv

    git mv <old name> <new name>
    

    这是一个来自 git bash 的演示。 (Windows 7的)

    【讨论】:

    • 请使用目录重试。
    • 在使用图形界面的 Windows 10 中,如果文件或目录仅重命名为大小写,则显示的名称为原始大小写。如果再次单击文件或目录,则新案例会显示在编辑框中,但会再次返回到原​​始案例。因此,情况似乎并没有改变。这可以通过打开命令提示符并使用 dir 命令来显示。显示的案例并不总是与资源管理器窗口中显示的一致。
    【解决方案3】:

    没有。没有办法告诉 Git 你不想将文件夹移动到任何其他目录中。

    这不是 git 的限制,而是 Windows 和 NTFS 的限制。因为文件系统不区分大小写,所以它报告已更改大小写的新名称已经存在,这会导致您遇到的行为。尝试两步重命名(使用临时名称),然后提交,或在非 Windows(技术上在区分大小写的文件系统)计算机上更改它。

    【讨论】:

    • 你的第一句话不可能是正确的,因为在 Windows 资源管理器中,我只能按大小写重命名目录,没有任何问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-07
    • 2016-05-15
    • 2016-11-24
    • 1970-01-01
    • 2019-10-12
    • 2010-12-10
    • 1970-01-01
    相关资源
    最近更新 更多