我创建了一个common包含大量源文件和文件夹的文件夹.
现在我想将common文件夹移动到文件include夹中,看起来像include/common
我试过这些:
git add include
git mv common/ include/
但它失败了这个错误
致命:糟糕的来源,来源= myrepo/common,destination = myrepo/include
我试过git mv common/include/common但是我得到了同样的错误
知道怎么做到这一点?
And*_*ack 171
关于git最好的一点是你不需要显式跟踪文件重命名.Git会通过比较文件的内容来弄明白.
所以,在你的情况下,不要这么努力:
$ mkdir include
$ mv common include
$ git rm -r common
$ git add include/common
Run Code Online (Sandbox Code Playgroud)
跑步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
#
Run Code Online (Sandbox Code Playgroud)
Von*_*onC 152
git mv common include
Run Code Online (Sandbox Code Playgroud)
应该管用.
git mv [-f] [-n] [-k] <source> ... <destination directory>
Run Code Online (Sandbox Code Playgroud)
在第二种形式中,最后一个参数必须是现有目录; 给定的源将被移动到此目录中.
成功完成后会更新索引,但仍必须提交更改.
搬家前不git add应该做" " .
注意:" git mv A B/",当B不存在作为目录时,应该出错,但它没有.
见提交c57f628由马修莫伊(moy)为GIT中1.9/2.0(Q1 2014):
Git用于修剪尾部斜杠,并使命令等效于'
git mv file no-such-dir',它创建了文件no-such-dir(而尾部斜杠明确声明它只能是一个目录).此修补程序跳过目标路径的尾部删除斜杠.
带有尾部斜杠的路径将传递给rename(2),该错误将显示相应的消息:
$ git mv file no-such-dir/
fatal: renaming 'file' failed: Not a directory
Run Code Online (Sandbox Code Playgroud)
小智 18
命令:
$ git mv oldFolderName newFolderName
Run Code Online (Sandbox Code Playgroud)
它通常工作正常.
错误"bad source ..."通常表示在上次提交后,源目录中存在一些重命名,因此git mv无法找到预期的文件.
解决方案很简单 - 只需在申请前提交git mv.
Kev*_*uck 12
确保在运行之前已将所有更改添加到暂存区域
git mv oldFolderName newFoldername
Run Code Online (Sandbox Code Playgroud)
git失败并出错
fatal: bad source, source=oldFolderName/somepath/somefile.foo, destination=newFolderName/somepath/somefile.foo
Run Code Online (Sandbox Code Playgroud)
如果有任何未添加的文件,那么我才发现.
很抱歉,我没有足够的声誉来评论“Andres Jaan Tack”的“答案”。
我想我的消息将被删除((但我只想警告“lurscher”和其他遇到同样错误的人:小心做
$ mkdir include
$ mv common include
$ git rm -r common
$ git add include/common
Run Code Online (Sandbox Code Playgroud)
这可能会导致您不会在新文件夹中看到项目的 git 历史记录。
我试过了
$ git mv oldFolderName newFolderName
Run Code Online (Sandbox Code Playgroud)
得到了
fatal: bad source, source=oldFolderName/somepath/__init__.py, dest
ination=ESWProj_Base/ESWProj_DebugControlsMenu/somepath/__init__.py
Run Code Online (Sandbox Code Playgroud)
我做了
git rm -r oldFolderName
Run Code Online (Sandbox Code Playgroud)
和
git add newFolderName
Run Code Online (Sandbox Code Playgroud)
我在我的项目中没有看到旧的 git 历史。至少我的项目没有丢失。现在我在 newFolderName 中有我的项目,但没有历史记录(
只是想警告一下,如果你不想丢失你的 git hsiory,请小心使用“Andres Jaan Tack”的建议。
| 归档时间: |
|
| 查看次数: |
135134 次 |
| 最近记录: |