git命令将文件夹移动到另一个文件夹中
我创建了一个与一堆源文件和文件夹common
的文件夹。
现在我想将common
文件夹移动到include
文件夹中,使其看起来像include/common
我试过这些:
git add include
git mv common/ include/
但它会因此错误而失败
致命:来源不明,来源= myrepo / common,目的地= myrepo / include
我试过git mv common / include / common,但是我得到了同样的错误
任何想法如何实现这一目标?
git最好的事情之一是你不需要明确地跟踪文件重命名。 Git会通过比较文件的内容来找出它。
所以,就你而言,不要那么努力:
$ mkdir include
$ mv common include
$ git rm -r common
$ git add include/common
运行git status
应该会显示如下的内容:
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# renamed: common/file.txt -> include/common/file.txt
#
git mv common include
应该管用。
从git mv
手册页:
git mv [-f] [-n] [-k] <source> ... <destination directory>
在第二种形式中,最后一个参数必须是现有目录; 给定的源将被移动到这个目录中 。
成功完成后更新索引,但仍必须提交更改。
移动前不应该使用“ git add
”。
注意:“ git mv AB/
”,当B
不存在作为一个目录时,应该出错,但它没有。
参见Matthieu Moy( moy
)为Git 1.9 / 2.0(2014年第1季度)提交的c57f628:
Git用于修剪尾部斜线,并使命令等效于' git mv file no-such-dir
',该命令创建文件no-such-dir
(而尾部斜线明确指出它只能是一个目录)。
此修补程序将跳过目标路径的尾部斜杠删除。
具有结尾斜杠的路径被传递给重命名(2),该错误与适当的消息一起输出:
$ git mv file no-such-dir/
fatal: renaming 'file' failed: Not a directory
命令:
$ git mv oldFolderName newFolderName
它通常工作正常。
错误“bad source ...”通常表示在上次提交后,源目录中有一些重命名,因此git mv
无法找到预期的文件。
解决方案很简单 - 只需在应用git mv
之前提交即可。