我有一个
dir1/ 目录包含许多文件和子目录,我想将该目录名称更改为 dir2/。我尝试了
git mv dir1/ dir2/
然后我得到了这个消息:
fatal: renaming 'dir1' failed: Permission denied
更新:
我在Git for Windows命令行中运行了http://code.google.com/p/msysgit/
正确的命令是什么?
我有一个
dir1/ 目录包含许多文件和子目录,我想将该目录名称更改为 dir2/。我尝试了
git mv dir1/ dir2/
然后我得到了这个消息:
fatal: renaming 'dir1' failed: Permission denied
更新:
我在Git for Windows命令行中运行了http://code.google.com/p/msysgit/
正确的命令是什么?
可能是因为该目录(或其中的某个文件)正在被其他程序使用,这会阻止您对该文件夹进行任何操作。仅限于Windows操作系统。
如果您不确定哪个程序占用了该目录/文件,请使用Process Explorer。
你可以直接使用标准的Unix工具,或者你所使用的操作系统提供的工具。因此:
mv dir1 dir2
应该可以正常工作。只需确保在此操作完成后将dir1和dir2都添加到暂存区,以便您可以提交更改。
提交更改的示例(完成后)可能是:
git add dir1 dir2 && git commit dir1 dir2
可能还有其他方法可以实现。
源目录和目标目录都需要被提交到 git 仓库中。如果你想将 dir1 移动到 dir2,而 dir2 还没有被提交,你会收到这个错误信息。
我曾经遇到过同样的问题。TGitCache.exe是阻止文件夹重命名的进程。我使用任务管理器结束了该进程,并在Git Bash命令提示符下运行了命令。
我在cygwin中运行git。在我从要重命名的目录中删除未跟踪的文件之前,我遇到了同样的问题。这允许git mv
正确完成。
如果您在运行git status
时看到要重命名的目录中有未跟踪的文件,则必须将这些文件暂时移动到其他地方,并在git mv
之后再将它们带回来。