天天看點

【Git】git reset版本復原1. git reset --hard2. git reset --soft & git reset3. 版本復原之再回來4. git reset HEAD filename

有時候,我們用Git的時候有可能commit送出代碼後,發現這一次commit的内容是有錯誤的,那麼有兩種處理方法:

1、修改錯誤内容,再次commit一次

2、使用git reset 指令撤銷這一次錯誤的commit

第一種方法比較直接,但會多次一次commit記錄。

而我個人更傾向第二種方法,錯誤的commit沒必要保留下來。

那麼今天來說一下git reset。它的一句話概括

git-reset - Reset current HEAD to the specified state
           

意思就是可以讓HEAD這個指針指向其他的地方。例如我們有一次commit不是不是很滿意,需要回到上一次的Commit裡面。那麼這個時候就需要通過reset,把HEAD指針指向上一次的commit的點。

它有三種模式,soft,mixed,hard,具體的使用方法下面這張圖,展示的很全面了。

【Git】git reset版本復原1. git reset --hard2. git reset --soft & git reset3. 版本復原之再回來4. git reset HEAD filename

1. git reset --hard

reset --hard 會在重置 HEAD 和branch的同時,重置stage區和工作目錄裡的内容。當你在 reset 後面加了 --hard 參數時,你的stage區和工作目錄裡的内容會被完全重置為和HEAD的新位置相同的内容。換句話說,就是你的沒有commit的修改會被全部擦掉。

例如你在上次 commit 之後又對檔案做了一些改動:把修改後的ganmes.txt檔案add到stage區,修改後的shopping list.txt保留在工作目錄

2. git reset --soft & git reset

參考:Git reset的三種模式

3. 版本復原之再回來

加入我們已經從版本2復原到了版本1,那麼我們又想從版本1復原到版本2怎麼辦?

git reflog

介紹: 可以檢視所有分支的所有操作記錄(包括已經被删除的 commit 記錄和 reset 的操作)

執行

git reset --hard HEAD~1

,退回到上一個版本,用git reflog則可以看到被删除的commitid(用

git log

則是看不出來被删除的commitid),我們就可以買後悔藥,恢複到被删除的那個版本。

操作過程為:

1、

git reflog

檢視想要回退到那個版本的哈希碼

2、

git reset --hard HEAD^

回退

4. git reset HEAD filename

讓檔案從暫存區回到工作區,仍保持修改狀态

【Git】git reset版本復原1. git reset --hard2. git reset --soft & git reset3. 版本復原之再回來4. git reset HEAD filename