git mv命令不会删除旧文件

4
我跑了这个代码:

 $ git mv README README.md

然后:

 $ git commit -m "renamed" README.md
 $ git push origin master

但是在 Github 上,旧的 README 文件仍然存在于仓库中。为什么呢?

1个回答

5
因为您实际上从未执行移动操作中的删除部分。

http://www.kernel.org/pub/software/scm/git/docs/git-commit.html

可以通过以下几种方式指定要添加的内容:

...

3) 将文件列为提交命令的参数,此时提交将忽略已在索引中暂存的更改,而是记录所列出文件的当前内容(这些文件必须已经在git中知晓);

请注意这里的关键点:将忽略已在索引中暂存的更改git mv 同时暂存旧文件的删除和新文件的创建,但不进行提交。当您调用 git commit README.md 时,它会提交新名称版本的文件,但会忽略已暂存的旧文件的删除操作。

请尝试使用以下序列:

$ git mv README README.md
$ git commit -m "renamed"
$ git push origin master

提交形式不同寻常,做得很好。 - CB Bailey
这个工具有时候真是太糟糕了,又是一个原因…而且,如果在提交之后的某个时间点再进行git push origin master操作,似乎是行不通的。也就是说,当进行其他不相关的提交后,尝试使用git push origin master来完成Git无法一步完成的移动。 - jww

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接