git rm与直接rm的区别
git rm
行为:
1.删除一个文件
2.将被删除的这个文件纳入缓存区
$ git rm a rm 'a' $ git status On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) deleted: a
提交:
直接 git commit -m ''
$ git commit -m 'delete a' [master 1cd6efe] delete a 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 a $ git status On branch master nothing to commit, working directory clean
恢复:
1. 恢复暂存区
2. 恢复工作区
$ git reset HEAD a Unstaged changes after reset: D a $ 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: a no changes added to commit (use "git add" and/or "git commit -a") $ git checkout -- a $ git status On branch master nothing to commit, working directory clean
直接调用系统的rm
行为:
从工作区删除了一个文件
$ rm a $ 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: a no changes added to commit (use "git add" and/or "git commit -a")
提交:
1.把修改加入暂存区
2.提交暂存区的改动
$ git add a $ git status On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) deleted: a $ git commit -m 'delete a ' [master 689a73d] delete a 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 a $ git status On branch master nothing to commit, working directory clean
恢复:
直接恢复工作区就好了,git checout -- file
$ git checkout -- a
$ git status
On branch master
nothing to commit, working directory clean