git rm 命令
git rm 命令用于删除文件。
1. git 本地数据管理的分区
git 的本地数据管理分为三个区:
- 工作区(Working Directory):是可以直接编辑的地方。
- 暂存区(Stage/Index):数据暂时存放的区域。
- 版本库(commit History):存放已经提交的数据。
工作区的文件 git add 后到暂存区,暂存区的文件 git commit 后到版本库。
2. shell rm 命令
用于删除工作区的文件。
$ rm test.txt
使用 shell rm 命令删除工作区文件,然后查看状态:
$ git status On branch master Changes not staged for commit: (use "git add/rm..." to update what will be committed) (use "git checkout -- ..." to discard changes in working directory) deleted: test.txt no changes added to commit (use "git add" and/or "git commit -a")
shell rm 命令只是删除了工作区的文件,并没有删除版本库的文件。如果要删除版本库文件,还需要执行下面的命令:
$ git add test.txt $ git commit -m "delete test"
或者
$ git commit -a -m "delete test"
test.txt 文件从工作区和版本库中全部删除。
3. git rm 命令
删除工作区文件,并且将这次删除放入暂存区。
注意:要删除的文件必须没有经过修改,也就是说和当前版本库文件的内容相同,否则将会失败。
执行删除命令:
$ git rm test.txt rm 'test.txt'
查看当前状态(成功删除了工作区文件,并且将这次删除放入暂存区。):
$ git status On branch master Changes to be committed: (use "git reset HEAD..." to unstage) deleted: test.txt
然后提交到版本库:
$ git commit -m "delete test" [master f05b05b] delete test 1 file changed, 3 deletions(-) delete mode 100644 test.txt
成功删除了版本库中 test.txt 文件。
如果文件修改过内容,执行结果如下:
error: the following file has local modifications: test.txt (use --cached to keep the file, or -f to force removal)
4. git rm -f 命令
强制删除工作区和暂存区文件,并且将这次删除放入暂存区。
注意:要删除的文件无论修改过还是未修改过,无论是在工作区还是暂存区,都会被强制删除。
$ git rm -f test.txt rm 'test.txt'
查看状态(成功删除工作区和暂存区文件,并且将这次删除放入暂存区):
$ git status On branch master Changes to be committed: (use "git reset HEAD..." to unstage) deleted: test.txt
然后提交到版本库:
$ git commit -m "delete test" [master 9d5d2d2] delete test 1 file changed, 3 deletions(-) delete mode 100644 test.txt
成功删除了工作区、暂存区和版本库的文件。
5. git rm --cached 命令
删除暂存区文件,但保留工作区的文件,并且将这次删除放入暂存区。
执行删除命令:
$ git rm --cached test.txt rm 'test.txt'
查看状态(成功删除暂存区文件,保留工作区文件,并且将这次删除放入暂存区,注意这里文件取消了跟踪)。
$ git status On branch master Changes to be committed: (use "git reset HEAD..." to unstage) deleted: test.txt Untracked files: (use "git add ..." to include in what will be committed) test.txt
然后提交到版本库:
$ git commit -m "delete test" [master 223d609] delete test 1 file changed, 3 deletions(-) delete mode 100644 test.txt
删除了暂存区和版本库的文件,但保留了工作区的文件。
如果文件有修改并 git add 到暂存区,再执行 git rm --cached 和 git commit,那么保留的工作区文件是修改后的文件,同时暂存区的修改文件和版本库的文件也被删了。
下一章:git mv 命令
git mv 命令用于移动或重命名一个文件、目录或软连接。git mv 命令的语法:git mv [file] [newfile]。如果新但文件名已经存在,但还是要重命名它,可以使用 -f 参数:git mv -f [file] [newfile]。git mv 命令既可以重命名缓存区的文件,也可以重命名版本库的文件。