2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

間違ってrebaseしてリモートリポジトリにpushしちゃったけど、戻したい

Last updated at Posted at 2020-07-15

表題の通り慌てたので、備忘録。

経緯

ブランチで作業してからrabaseした後、問題ないかと思ってリポジトリにpushしたが、
間違いが判明し、戻したくなった。ある程度作業した後にrebaseするとrebase元のコミットとごちゃごちゃになってしまう。
これの対応方法は別途調べるとして、結果から言うと下記で戻しました。

git reflog 
git reset --hard HEAD@{番号}
git push -f origin ブランチ名

git reflog

履歴やブランチの切り替え履歴を参照できる。
git resetを行うとgit logでは履歴が消えてしまうが、git reflogでは履歴が残る。

git reset --hard HEAD@{番号}

--hard
「HEADの位置・インデックス・ワーキングツリー」全てが対象
最後のコミットの状態に戻す

他のオプションとして、

オプション 対象 使用例
--mixed オプションを指定しない場合はデフォルトでこれになる。「HEADの位置・インデックス」が対象 addを取り消したい時など
--soft 「HEADの位置」のみ コミットのみ削除など

HEAD@{番号}はgit reflogで確認できる

git push -f origin ブランチ名

強制的にpushする
※共有されたブランチで使用する場合には要注意。

以上です。
いいねやQiitaやTwitterのフォローいただけると励みになります!
他にも方法がありましたら、コメントお待ちしております。
宜しくお願いします〜

参考

git pull と git pull –rebase の違いって?図を交えて説明します!
【 git revert/git reset 】コマンド――コミットを取り消す
git push を強制する -f (–force)と –force-with-lease
[git reset (--hard/--soft)]ワーキングツリー、インデックス、HEADを使いこなす方法

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?