将当前目录的所有文件移动到子目录中并保留历史记录

时间:2015-10-07 21:20:37

标签: git

如何将当前目录的所有文件移动到新目录中并保留历史记录。

我试过了:

git mv . old_app

但我明白了:

fatal: bad source, source=, destination=old_app/

5 个答案:

答案 0 :(得分:26)

我偶然发现了这条错误消息,显然解决方案非常简单。

但首先请记住mvgit 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

https://superuser.com/a/112141启发的答案。

答案 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)

如果您是Windows用户,this是您的一种解决方案。

  1. 如果尚未安装Turtoise Git,请安装
  2. 选择要移动的文件夹
  3. 鼠标右键,Turtoise git,重命名

enter image description here