Member-only story
[Git] How To Rollback To A Specific Version?
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…