Git中的各類後悔藥

Git強大的撤銷、版本回退功能,讓咱們在開發的過程當中可以隨意的回到任何一個時間點的狀態,本文咱們就來看看Git中的各類後悔藥! git

本文是Git系列的第三篇,瞭解前面的文章有助於更好的理解本文:編輯器


1.Git概述
2.Git基本操做spa


本文將從以下三個方面介紹Git中的後悔藥:日誌

1.工做區的代碼想撤銷
2.add到暫存區的代碼想撤銷
3.提交到本地倉庫的代碼想撤銷code

提交到遠程倉庫的後悔藥咱們統一都在關聯遠程倉庫一文中講解,敬請期待。blog

工做區的代碼想撤銷

可能有一天我正在寫代碼,寫了好久發現寫錯了,想恢復到一開始的狀態,一個笨辦法就是把剛剛寫的代碼一行一行的刪除,不過這種方式成本過高,咱們能夠經過git checkout -- <file>命令來撤銷工做區的代碼修改。以下圖: 圖片

圖片描述

首先咱們執行了git status命令,發現工做區是乾淨的,而後執行了cat命令,發現文件只有兩行內容,而後經過vi編輯器向文件中添加一行,保存並退出,退出來以後又執行了git status命令,此時工做區的狀態已經發生變化,而後咱們執行了git checkout -- git01.txt命令,表示撤銷以前的操做,讓git01.txt恢復到以前的狀態,該命令執行成功以後,咱們再執行cat命令發現文件內容已經恢復了,此時再執行git status,狀態也恢復了。開發

add到暫存區的代碼想撤銷

若是想要撤銷,可是代碼已經提交到暫存區了,不用擔憂,也能撤銷,分兩個步驟: get

1.將暫存區的代碼撤銷到工做區
2.將工做區的代碼撤銷(具體操做和'工做區的代碼想撤銷'一致) it

將暫存區的代碼撤銷,咱們可使用git reset HEAD命令來實現。以下圖:

圖片描述

這裏的代碼都比較簡單,核心的過程就是先執行git reset HEAD命令,從暫存區撤銷,剩下的操做參考'工做區的代碼想撤銷'一節。

提交到本地倉庫的代碼想撤銷

一樣的,提交到本地倉庫的代碼同樣也能夠撤銷,咱們能夠利用git reset --hard <版本號>命令來實現版本回退,該命令中的版本號有幾種不一樣的寫法:

1.可使用HEAD^來描述版本,一個^表示前一個版本,兩個^^表示前兩個版本,以此類推。
2.也可使用數字來代替^,好比說前100個版本能夠寫做HEAD~100。
3.也能夠直接寫版本號,表示跳轉到某一個版本處。咱們每次提交成功後,都會生成一個哈希碼做爲版本號,因此這裏咱們也能夠直接填版本號,哈希碼很長,可是咱們不用所有輸入,只須要輸入前面幾個字符便可,就能識別出來。

看下面一系列的操做:
1.經過git log查看當前提交日誌:

圖片描述

2.經過git reset HEAD^^向前回退兩個版本:

圖片描述

3.查看日誌,發現最後一次提交的版本號是695ce1fe,利用git reset --hard 695ce1fe命令回到回退以前的狀態:

圖片描述

4.經過git reset --hard HEAD~1回到上一個版本:

圖片描述

好了,Git中的後悔藥咱們就先介紹到這裏,有問題歡迎留言討論。

參考資料:

1.《GitHub入門與實踐》
2.《Pro Git》

更多JavaEE和Git資料請關注公衆號:

圖片描述

相關文章
相關標籤/搜索