如何将当前目录的所有文件移动到新目录中并保留历史记录。
我试过了:
git mv . old_app
但我明白了:
fatal: bad source, source=, destination=old_app/
答案 0 :(得分:26)
我偶然发现了这条错误消息,显然解决方案非常简单。
但首先请记住mv
和git move
。
正常的bash移动用法是:mv * ./subDir
,它只会产生警告,但仍会移动你的文件。
而使用git mv
的{{1}}将产生致命错误并中止移动:
git mv * ./subDir
使fatal: can not move directory into itself, source=currentDir/subDir, destination=currentDir/subDir/subDir
工作的解决方案很简单:
git mv
option -k
将简单地跳过所有会产生错误的操作。
答案 1 :(得分:3)
所以,我遇到了同样的问题,对我来说工作是什么
for file in $(ls | grep -v 'yourfolder'); do git mv $file yourfolder; done;
答案 2 :(得分:1)
在Windows上,您可以使用:
FOR %F IN (*) DO IF NOT %F == old_app git mv %F old_app
FOR /D %D IN (*) DO IF NOT %D == old_app git mv %D old_app
如果您在批处理文件中执行此操作,则需要分别使用%%F
和%%D
代替%F
和%D
答案 3 :(得分:-1)
我认为,这是你正在做的无效操作。
您无法将当前目录(pwd).
移动到当前目录内的其他目录。即使mv
命令也不起作用。正如输出所说
mv: cannot move ‘.’ to ‘someDir/.’: Device or resource busy
在git mv中使用*也说
git mv * someDir
fatal: can not move directory into itself, source=curDir, destination=curDir/someDir
上一个目录级别,然后选择要移动到目标目录的目录。在这种情况下,也不能使父目录在子目录中移动。可以使父目录内容/文件移动到目标目录,但不能移动到父目录本身。
答案 4 :(得分:-1)