it-swarm.cn

为什么使用'git rm'删除文件而不是'rm'?

在SVN上,直接从文件系统中删除某些东西(而不是使用svn)会产生一些令人头疼的问题。到目前为止,使用git,我没有发现这是一个问题,但我注意到git有它自己的rm实现。

有区别吗?难道我做错了什么?

130
cjm2671

如果您只使用rm,则需要使用git add <fileRemoved>进行跟进。 git rm只需一步即可完成此操作。

您还可以使用git rm --cached,它将从索引中删除文件(在下次提交时将其暂存以进行删除),但请将您的副本保留在本地文件系统中。

197
Andy

使用rm删除文件本身并不是问题,但是如果你想提交文件被删除,你将不得不做一个git rm,所以你也可以这样做。

此外,根据您的Shell,删除文件后执行git rm,您将无法完成制表符,因此您必须自己拼出路径,而如果您在文件仍然存在时git rm,则制表符完成将正常工作。

9
hammar

git rm将从索引和工作目录中删除该文件(如果您使用了--cached,则只有索引),以便为下次提交暂存删除。

6
manojlds

但是,如果你最终使用rm而不是git rm。您可以跳过git add并使用以下命令直接提交更改:

git commit -a

4
Struggler

从索引中删除文件,或从工作树和索引中删除文件。 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
3
basicxman

使用git rm时,删除将是您下一次提交的一部分。因此,如果你想推动改变,你应该使用git rm

2
keis