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項目地址

微信小程序實例列表

前端筆記列表

遊戲列表

相關文章
相關標籤/搜索