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

 

 

 

  

 

posted @ 2019-03-18 20:36  413Xiaol  阅读(1265)  评论(0编辑  收藏  举报