2010-10-11 102 views
4

我跑了这一点:git的MV不会删除旧文件

$ git mv README README.md 

然后:

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

但随着在github上,旧的README文件仍然在资源库中。 为什么?

回答

5

因为您从未实际犯过移动的删除部分。

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

添加可以通过多种方式来指定的内容:

...

3)列出文件作为参数传递给commit命令,在这种情况下,提交将忽略在索引中进行的更改,而是记录列出的文件的当前内容(它必须已为git所知);

注意这里至关重要的一点:将忽略索引中上演的变化。 git mv阶段都删除旧文件和创建新文件,但不提交它们。当您致电git commit README.md时,它会提交文件的新名称版本,但会忽略旧文件的暂存删除。

试试这个序列代替:

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

提交的不寻常的形式好去处。 – 2010-10-11 07:15:02

+0

这个工具有时会被破坏的另一个原因......另外,如果'push'发生在'commit'之后的某个时间,'git push origin master'似乎不起作用。也就是说,执行另一个不相关的提交,然后尝试'git push origin master'来完成Git无法一步执行的操作。 – jww 2016-04-22 18:42:47