GIt學習及命令的使用(四)——版本回退

1、git reset --soft HEAD^

撤銷最近的一次提交,將修改還原到暫存區。–soft 表示軟退回,對應的還有 --hard 硬退回;HEAD^ 表示撤銷一次提交,HEAD^^ 表示撤銷兩次提交,撤銷 n 次可以簡寫爲 HEAD~n
執行git branch -avv命令會發現本地倉庫的 master 分支的版本號變成了前一次提交的版本號;
在這裏插入圖片描述
執行git status查看倉庫狀態,發現上一個提交中的修改全部扔回了暫存區
在這裏插入圖片描述
相應文件修改後,再本地提交,然後執行git statusgit branch -avv查看倉庫狀態和分支狀態:
在這裏插入圖片描述
可以看到本地倉庫的 master 分支與遠程倉庫的 origin/master 分支在提交版本上有了衝突,又叫做提交時間線分叉。因爲剛纔的提交操作不是基於遠程倉庫 origin/master 分支的最新提交版本,而是撤回了一個版本。
這種情況下也是可以將本地 master 分支推送到遠程倉庫的,需要加一個選項 -f(force強制推送)git push -f
執行git branch -avv 看一下分支信息,本地 master 與遠程 master 的版本號一致
在這裏插入圖片描述

2、git reflog

如果發現剛纔的版本回退操作全都是誤操作,此時可利用git reflog命令(它會記錄本地倉庫所有分支的每一次版本變化。實際上只要本地倉庫不被刪除,隨你怎麼折騰,都能回退到任何地方。reflog 記錄只存在於本地倉庫中,本地倉庫刪除後,記錄消失。)
在這裏插入圖片描述
此時發現有4個版本號,可以利用git reset --hard [版本號]git reset --hard HEAD@{x}退回到你想要的版本(注意:這都是在本地倉庫進行的操作

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章