在日常coding的時候,有時因爲某些原因需要進行版本回退(回滾),具體操作如下:
1. git log :使用該命令查看由近至遠提交日誌記錄,查看commit_id
$ git log
commit fbb68a72151353e6c5c256204a55eb596cf44cfe
Author: Brians <[email protected]>
Date: Fri May 22 16:52:22 2020 +0800
版本2.0
commit fd14ac63554c030c26232f7b6b823fac64056f37
Author: Brians <[email protected]>
Date: Thu May 21 16:26:29 2020 +0800
初始版本1.0
......
提交記錄過多的情況下,輸入 q 即可退出 git log 顯示
2. 如果感覺 git log 顯示信息過多,可使用命令 git log --pretty=oneline ,只顯示提交的commit_id和對應的提交說明
$ git log --pretty=oneline
fbb68a72151353e6c5c256204a55eb596cf44cfe 版本2.0
fd14ac63554c030c26232f7b6b823fac64056f37 初始版本1.0
3. git reset --hard commit_id :獲取到所需回滾版本的 commit_id 後使用該命令進行版本回滾
$ git reset --hard fd14ac63554c030c26232f7b6b823fac64056f37
HEAD is now at fd14ac6 初始版本1.0
此處commit_id可以不必完整填寫,只填前幾位字符即可,git 會自動查找,如可寫爲 git reset --hard fd14ac6
4. 如果版本不小心回退錯了,怎麼返回之前版本(未來版本)呢?命令窗口沒有關閉的話,我們可向上查找之前版本的commit_id,使用 git reset --hard commit_id 命令即可
$ git reset --hard fbb68a
HEAD is now at fbb68a7 版本2.0
當前如果窗口關閉的情況下,commit_id看不到了,我們可以使用 git reflog 命令查看
$ git reflog
fbb68a7 HEAD@{0}: reset: moving to fbb68a
fd14ac6 HEAD@{1}: reset: moving to fd14ac63554c030c26232f7b6b823fac64056f37
fbb68a7 HEAD@{2}: commit: 版本2.0
fd14ac6 HEAD@{3}: commit (initial): 初始版本1.0
然後使用 git reset --hard commit_id 進行版本回退至未來版本即可。
5. 遠程倉庫分支版本回退
如果之前版本已經提交到遠程倉庫分支上了,我們本地進行版本回退後,因爲本地版本是低於遠程倉庫版本的,所以需要使用 git push -f 強制推送至遠程分支上進行覆蓋,否則是無法推送至遠程分支上的。
git push -f origin master