Member-only story

[Git] How To Rollback To A Specific Version?

Angel@Software Engineer
8 min readNov 20, 2020

--

這篇分享我實際上會用的指令,也是我覺得比較好用的,跟碰過的一些狀況處理。

假設你現在的commit紀錄,長這樣

2a73943 (HEAD -> qq, origin/qq) v2
c7a8812 v1

git revert HEAD
將目前版本v2,返回上一次的版本v1

或者你知道當前版本的commit hash, 例如現在的commit hash是 2a73943, 你也可以下這種

git revert 2a73943
意思就是,回到2a73943這個hash的上一個版本

git reset也可以做到一樣的事情,你可以直接下

git reset --hard c7a8812 

一樣會讓版本回到v1,回到v1後想再回到v2的code,就改成下

git reset --hard 2a73943

git reset c7a8812 可以想成是 I want c7a8812 version.

網路上會有大片文章跟你說,reset跟revert的差別,但在這案例中,只是想要將Code回到v1,還有可以切到各種版本的code來說,還沒有感受到差異。

Revert a merge commit issue

但還是有差異的,如果你現在的版本是merge action,想回到v2版本。比如現在的commit log如下。

bb10cc3 (HEAD -> qq) Merge branch ‘test’ into qq
9968e70 v2

你下了剛剛以上的兩種revert指令,都會跟你噴一樣的錯誤。

> git revert bb10cc3
error: commit bb10cc352a0bbe85d8619e1141b998dce986b18c is a merge but no -m option was given.
fatal: revert failed
> git revert HEAD
error: commit bb10cc352a0bbe85d8619e1141b998dce986b18c is a merge but no -m option was given.
fatal…

--

--

Angel@Software Engineer
Angel@Software Engineer

Written by Angel@Software Engineer

There are a thousand Angels in a thousand people's eyes. 一千個人有一千個Angel.

No responses yet