美文网首页
Git 笔记(四)撤销修改和删除文件

Git 笔记(四)撤销修改和删除文件

作者: 红发_SHANKS | 来源:发表于2018-07-11 13:56 被阅读7次

撤销修改

如果我们在修改了某个文件之后,想要撤销修改,可能遇到的情况有以下三种:

  • 撤销工作区的修改
  • 如果已经提交到暂存区,撤销暂存区的修改
  • 如果已经commit 到本地仓库,撤销本地仓库的修改

撤销工作区的修改###

使用命令行 git checkout -- file,一定要记得加上 --

首先我们修改 README 文件,然后调用 git status 查看状态

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   README.md

no changes added to commit (use "git add" and/or "git commit -a")

git 告诉我们,这时候我们可以有两个操作,一个就是 add 到暂存区,另一个就是撤销对工作区这个README文件的修改。我们执行 git checkout -- <file> 看看有什么效果

$ git checkout -- README.md
$ git status
On branch master
nothing to commit, working tree clean

我们再次查看状态,发现 git 告诉我们,工作区很干净,说明我们的撤销成功了。

撤销暂存区的修改###

如果我们已经将修改的文件 add 到了暂存区。这时候可以使用命令行 git reset HEAD <file>

首先修改 README 文件,然后 add 到暂存区,查看状态

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   README.md

git 告诉我们,这个时候可以继续进行 commit 操作,也可以使用命令行 git reset HEAD <file> 进行撤销,我们操作下试试。

$ git reset HEAD README.md
Unstaged changes after reset:
M       README.md
$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   README.md

no changes added to commit (use "git add" and/or "git commit -a")

可以看到已经将我们的修改从暂存区撤销了。再继续调用 git checkout -- <file> ,就可以将工作区的修改也撤销了。

撤销本地仓库的修改###

如果我们已经将修改提交到了本地仓库的话,就需要使用前两节笔记中的 git reset HEAD commit_id命令行了。

$ git reset HEAD^
Unstaged changes after reset:
M       README.md
$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   README.md

no changes added to commit (use "git add" and/or "git commit -a")

从上面的结果我们可以看到,我们已经提交到本地仓库的修改,已经被撤销,现在的状态是我们的修改在缓存区了。如果要继续撤销的话,参考前面两个步骤就行了。

总结

  • 从工作区撤销:git checkout -- <file>
  • 从暂存区撤销:git reset HEAD <file>
  • 从本地仓库撤销:git reset HEAD commit_id

删除文件

如果我们直接在工作区将某个文件删除,这时候,工作区和本地仓库的版本就不一样了,来看看 git status 查看状态的效果:

$ 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:    hi.txt

no changes added to commit (use "git add" and/or "git commit -a")

git 提示我们,我们在本地删除了文件,但是没有提交修改到暂存区。这时候我们可以通过 git checkout --<file>从暂存区恢复我们的文件,也可以通过 git add/rm <file>将我们的修改提交到暂存区。
首先验证 git add 方式提交删除修改

$ git add .
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        deleted:    hi.txt

$ git commit -m "delete hi.txt"
[master 49b52ba] delete hi.txt
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 hi.txt
$ git status
On branch master
nothing to commit, working tree clean

可以看到正确的从本地仓库删除了文件 hi.txt。
我们被删除的文件恢复以后再尝试使用 git rm <file>看看效果

首先是使用我们前面学到的两种撤销修改的方式恢复删除文件

$ git reset HEAD^
Unstaged changes after reset:
D       hi.txt
$ git checkout -- hi.txt

查看本地仓库文件夹,被删除的 hi.txt 确实恢复了。那么删除它,看看 git rm <file>指令的效果。

$ git rm hi.txt
rm 'hi.txt'
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        deleted:    hi.txt
$ git commit -m "delete hi.txt"
[master 8e7a71b] delete hi.txt
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 hi.txt
$ git status
On branch master
nothing to commit, working tree clean

和使用 git add方式一样。

总结
手动删除文件以后,调用git rm/add <file> 命令行可以将 删除修改提交到暂存区。

相关文章

  • 1223

    git 撤销和删除 撤销工作区的修改:撤销某个文件的工作区修改:git checkout [--] filepat...

  • Git 笔记(四)撤销修改和删除文件

    撤销修改 如果我们在修改了某个文件之后,想要撤销修改,可能遇到的情况有以下三种: 撤销工作区的修改 如果已经提交到...

  • Github常用的命令:

    切换分支:git checkout name 撤销修改:git checkout -- file 删除文件:git...

  • Git 的使用

    1、 安装git2、创建版本仓库3、添加文件到 git仓库4、修改文件、版本回退、撤销修改、删除文件5、工作区和暂...

  • 有关Git的那些事儿(六)—修改

    Git管理的是修改,而非文件本身。增加、删除、甚至是创建新文件都是修改。 Git既可以管理修改,也可以撤销修改。 ...

  • git学习笔记

    摘要:本篇文章将记录git的安装和使用,git的使用包括文件的撤销修改、删除文件。远程仓库的使用。分支管理。标签管...

  • git | Git撤销修改和删除文件操作。

    撤销修改 比如我现在在readme.txt文件里面增加一行 内容为5555,我们先通过命令查看如下: 在我未提交之...

  • Git管理修改、撤销和删除文件

    备注: 本文参考于廖雪峰老师的博客Git教程[https://www.liaoxuefeng.com/wiki/0...

  • git 如何删除已经 add 的文件 (如何撤销已放入缓存区文件

    git 如何删除已经 add 的文件 ( 如何撤销已放入缓存区文件的修改) 使用git rm命令即可,有两种选择:...

  • 管理修改

    撤销修改 $ git checkout -- file $ git reset HEAD file 小结 2.删除...

网友评论

      本文标题:Git 笔记(四)撤销修改和删除文件

      本文链接:https://www.haomeiwen.com/subject/lodhpftx.html