git rm`命令会把文件从已跟踪列表(及暂存区)中移除,并且移除把文件从工作目录中移除,这样下一次你就不会在未跟踪文件列表中看到这些文件了。
如果你只是简单的把文件从工作目录移除,而没有使用git rm
$ git status
On branch master
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: main.c
no changes added to commit (use "git add" and/or "git commit -a")
此时处于未暂存区域,即使提交,也无法真正删除文件。
而如果使用git rm
命令
$ git rm main.c
rm 'main.c'
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
deleted: main.c
此时,变更直接进入到“暂存区”,等待下一次提交即可生效。同时,main.c文件已经被从目录中删除。
你可以将文件目录作为参数
$ git rm log/\*.log
将会把log目录中所有以log为扩展名的文件删除。反斜杠\
代表会递归的处理所有子目录
$ git rm \*~
将会移除所有以~结尾的文件
开关
--cached
开关用于移除文件后,文件仍然会保留在原位置,但Git将不再对其进行跟踪,同时从暂存区移除该文件。