我想重命名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选项,但结果相同:
$ 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已经是一个存在的目录,应该将该目录移到其中。我知道我可以使用临时目录名重命名& commit,然后将& amend-commit重命名为最终名称,但有没有办法告诉Git我不想移到任何其他目录中?
4条答案
按热度按时间cyej8jka1#
你可以尝试做它在2个步骤。
会成功
eeq64g8w2#
我尝试过用TortoiseGit重命名目录,用git mv重命名命令提示符,用git mv重命名git bash。move命令是mv Status status或git mv Status status2,它们都响应“失败:权限被拒绝”。所以看起来我要么删除git仓库,然后用新的目录名结构创建一个新的仓库,要么创建一个Linux VM,克隆它,然后尝试在那里重命名它。看起来只有文件可以在windows下重命名,但是目录就是失败了。至于那些说git mv对他们有用的人,你的设置里肯定有什么地方漏了。
xxhby3vn3#
由于windows i区分大小写,你不能重命名文件为相同的字母.(Docs == docs [忽略大小写])
你可以在
git bash
中实现,因为git bash是cygwin,而且它是区分大小写的,因为它是一个unix模拟器。命令是git mv
这是一个来自git bash的演示。(windows7)
qaxu7uf24#
不可以。没有办法告诉Git你不想把文件夹移动到其他目录中。
这并不是git的局限,而是Windows和NTFS的局限。因为文件系统不区分大小写,它会报告已经存在大小写更改过的新名称,这就导致了你所遇到的行为。尝试两步重命名(使用临时名称),然后提交,或者在非Windows的计算机上更改(技术上是在区分大小写的文件系统上)。