前置き
メモ書きです。
gitで指定のコミットに戻りたいとき、方法は2パターンある。
rebase
git rebase
変更を戻すコミットをする。
安全。
ログが増える。
reset
git reset
変更自体を取り消す。
危険。
ログが消える。
今回はresetの方を扱う。
ローカルで戻りたい
ローカルから頑張って書いたコードが消えるので注意。
プッシュしてあるなら戻すことができる。(後述)
以下でdに戻りたい場合
a <- HEAD
|
b
|
c
|
d <- ここに戻りたい
HEADから遡る指定方法は以下
a <- HEAD
|
b <- HEAD~1
|
c <- HEAD~2
|
d <- HEAD~3
git reset --hard HEAD~3
結果
d <- HEAD
戻したけど、やっぱり戻すのをやめる
プッシュ済みであれば、プルすればOK
git pull
リモートに反映したい
元のコミットは、別ブランチがない限り消えるので注意
プッシュ先が仮にdevブランチとする
git push -f origin dev
結果
d <- HEAD