为什么使用'git rm'来删除文件而不是'rm'?
在SVN上,直接从文件系统中删除某些东西(而不是使用svn)会产生一些令人头痛的问题。 到目前为止,使用git,我没有发现这是一个问题,但我注意到git有它自己的rm实现。
有区别吗? 难道我做错了什么?
如果你只是使用rm
,你需要使用git add <fileRemoved>
。 git rm
一步git rm
。
你也可以使用git rm --cached
,它将从索引中删除文件(暂存它在下一次提交时删除),但保留在本地文件系统中。
使用rm
去除文件本身并不是一个问题,但是如果你想提交这个文件被删除,你将不得不做一个git rm
,所以你可以这样做。
另外,根据你的shell,在删除文件后做git rm
,你将不会得到tab-completion,所以你必须自己拼写出path,而如果你在文件仍然存在的时候运行git rm
,tab完成将会起作用像平常一样。
git rm
会从索引和工作目录中删除这个文件(如果你使用了--cached
只有索引),这样删除才会被下一次提交。
当使用git rm时,删除将会成为下一次提交的一部分。 所以如果你想推动你的变化,你应该使用git rm
但是,如果你最终使用rm而不是git rm。 你可以跳过git add,直接使用以下命令提交更改:
git commit -a
从索引或从工作树和索引中删除文件。 git rm不会从你的工作目录中删除一个文件。
以下是如何使用rm -f
删除文件,然后使用git rm
从索引中删除它
$ rm -f index.html $ git status -s D index.html $ git rm index.html rm 'index.html' $ git status -s D index.html
不过你可以用git rm
来完成这一切
$ git status -s $ git rm index.html rm 'index.html' $ ls lib vendor $ git status -s D index.html