GIT学习----第六节:撤销修改

学习目的

  1. 当你在工做区修改了,可是你不想要修改的部分时,如何撤销?
  2. 当你将工做区的修改添加到暂存区,如何撤销?
  3. 当你将修改提交到分支,如何撤销?

撤销工做区修改

  1. 修改前
$ git diff
$ cat readme.txt
Git is a version control system.
Git is free software.
Git is a distributed version control system.
Git is free software.
添加一行测试工做区、暂存区、分支。
cat 命令测试。
测试修改文件后各区状态!
测试git diff,查看工做区和分支文件的修改状况!
再次测试git diff对比工做区和版本库最新版本的区别。
  1. 修改后
$ git diff
diff --git a/readme.txt b/readme.txt
index 1149d4c..3bbbb47 100644
--- a/readme.txt
+++ b/readme.txt
@@ -6,4 +6,5 @@ Git is free software.
 cat 命令测试。
 测试修改文件后各区状态!
 测试git diff,查看工做区和分支文件的修改状况!
-再次测试git diff对比工做区和版本库最新版本的区别。
\ No newline at end of file
+再次测试git diff对比工做区和版本库最新版本的区别。
+测试撤销修改。
\ No newline at end of file
$ cat readme.txt
Git is a version control system.
Git is free software.
Git is a distributed version control system.
Git is free software.
添加一行测试工做区、暂存区、分支。
cat 命令测试。
测试修改文件后各区状态!
测试git diff,查看工做区和分支文件的修改状况!
再次测试git diff对比工做区和版本库最新版本的区别。
测试撤销修改。
  1. 查看修改后工做区的状态
$ 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.txt

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

Git会告诉你,git checkout – file能够丢弃工做区的修改:html

$ git checkout -- readme.txt

命令git checkout – readme.txt意思就是,把readme.txt文件在工做区的修改所有撤销,这里有两种状况:前端

一种是readme.txt自修改后尚未被放到暂存区,如今,撤销修改就回到和版本库如出一辙的状态;git

一种是readme.txt已经添加到暂存区后,又做了修改,如今,撤销修改就回到添加到暂存区后的状态。github

总之,就是让这个文件回到最近一次git commit或git add时的状态。web

如今,看看readme.txt的文件内容:小程序

$ git diff
$ cat readme.txt
Git is a version control system.
Git is free software.
Git is a distributed version control system.
Git is free software.
添加一行测试工做区、暂存区、分支。
cat 命令测试。
测试修改文件后各区状态!
测试git diff,查看工做区和分支文件的修改状况!
再次测试git diff对比工做区和版本库最新版本的区别。

能够看出工做区的文件已经回到修改以前的版本!微信小程序


注意:git checkout – file命令中的–很重要,没有–,就变成了“切换到另外一个分支”的命令,咱们在后面的分支管理中会再次遇到git checkout命令。微信

撤销暂存区修改

  1. 修改前
$ cat readme.txt
Git is a version control system.
Git is free software.
Git is a distributed version control system.
Git is free software.
添加一行测试工做区、暂存区、分支。
cat 命令测试。
测试修改文件后各区状态!
测试git diff,查看工做区和分支文件的修改状况!
再次测试git diff对比工做区和版本库最新版本的区别。
  1. 修改后并添加到暂存区
$ cat readme.txt
Git is a version control system.
Git is free software.
Git is a distributed version control system.
Git is free software.
添加一行测试工做区、暂存区、分支。
cat 命令测试。
测试修改文件后各区状态!
测试git diff,查看工做区和分支文件的修改状况!
再次测试git diff对比工做区和版本库最新版本的区别。
修改添加到暂存区测试撤销!

$ git add readme.txt

2.1 查看状态svg

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

        modified:   readme.txt

Git一样告诉咱们,用命令git reset HEAD 能够把暂存区的修改撤销掉(unstage),从新放回工做区:学习

$ git reset HEAD readme.txt
Unstaged changes after reset:
M       readme.txt

git reset命令既能够回退版本,也能够把暂存区的修改回退到工做区。当咱们用HEAD时,表示最新的版本。

2.2 再次查看状态

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

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

Git会告诉你,git checkout – file能够丢弃工做区的修改,同时查看状态:

$ git checkout -- readme.txt

$ git status
On branch master
nothing to commit, working tree clean
  1. 撤销后
$ cat readme.txt
Git is a version control system.
Git is free software.
Git is a distributed version control system.
Git is free software.
添加一行测试工做区、暂存区、分支。
cat 命令测试。
测试修改文件后各区状态!
测试git diff,查看工做区和分支文件的修改状况!
再次测试git diff对比工做区和版本库最新版本的区别。

撤销分支修改

若是修改了,而且提交到分支了,想要撤销,参考GIT学习----第三节:版本回退

  1. 修改前
$ cat readme.txt
Git is a version control system.
Git is free software.
Git is a distributed version control system.
Git is free software.
添加一行测试工做区、暂存区、分支。
cat 命令测试。
测试修改文件后各区状态!
测试git diff,查看工做区和分支文件的修改状况!
再次测试git diff对比工做区和版本库最新版本的区别。
  1. 修改后并提交到分支
$ cat readme.txt
Git is a version control system.
Git is free software.
Git is a distributed version control system.
Git is free software.
添加一行测试工做区、暂存区、分支。
cat 命令测试。
测试修改文件后各区状态!
测试git diff,查看工做区和分支文件的修改状况!
再次测试git diff对比工做区和版本库最新版本的区别。
修改提交到分支测试!

$ git add readme.txt

$ git commit -m "提交到分支的修改进行撤销提交"
[master 076ec5c] 提交到分支的修改进行撤销提交
 1 file changed, 2 insertions(+), 1 deletion(-)
  1. 撤销到上个版本
$ git reset --hard HEAD^
HEAD is now at ffb306a 再次测试git diff提交测试
  1. 撤销后查看工做区内容
$ cat readme.txt
Git is a version control system.
Git is free software.
Git is a distributed version control system.
Git is free software.
添加一行测试工做区、暂存区、分支。
cat 命令测试。
测试修改文件后各区状态!
测试git diff,查看工做区和分支文件的修改状况!
再次测试git diff对比工做区和版本库最新版本的区别。

发现的确被撤销了!世界完美了!

小结

  1. 工做区撤销修改:git checkout – file.
  2. 暂存区撤销修改:(1)git reset HEAD ;(2)git checkout – file.
  3. 分支撤销修改:git reset --hard HEAD^.
  4. 特别注意此处撤销,是没有推送到远程版本库的撤销!没有推送到远程版本库的撤销!没有推送到远程版本库的撤销!重要的事说三遍!

其余

QQ交流群: 264303060

QQ交流群

个人博客,欢迎交流!

个人CSDN博客,欢迎交流!

微信小程序专栏

前端笔记专栏

微信小程序实现部分高德地图功能的DEMO下载

微信小程序实现MUI的部分效果的DEMO下载

微信小程序实现MUI的GIT项目地址

微信小程序实例列表

前端笔记列表

游戏列表

相关文章
相关标签/搜索