状況
- masterとブランチAは同じコミット上にいる
- ブランチAを親ブランチとしてブランチBを作った
- ブランチBでソースをゴニョゴニョいじってコミット&プッシュした
- GitHubのWebでブランチBをブランチAにマージしようとして、誤ってmasterにプルリク出してマージしてしまった
- 間違いに気が付かずにWeb(リモート)でブランチBを削除した
- 間違いに気が付かずにローカルでブランチBを削除した
- クライアントツールの樹形図を見ていて間違いに気がついた
Web上だけで戻す(revert)方法
1. リモートで削除してしまったマージ元のブランチを復活させる
- [Pull Request]タブを開いて[Filters]に入力されている「is:open」を削除してEnter
- マージ済みのプルリクが表示されるので、間違ったマージを選択して開く
- 削除してしまったマージ元のブランチの横にある[Restore branch]ボタンでブランチを復活させる
2. マージを戻す
-
マージしたところの横にある[Revert]ボタンで「マージを戻す用のプルリク」を作る
-
ここで
revert-{誤ったプルリクの番号}-{マージ元のブランチ名}
というフォーマットの「マージを戻す用のブランチ」が自動で作成される -
「マージを戻す用のプルリク」をマージする
-
「マージを戻す用のブランチ」を削除する(とっておきたかったら削除しなくてもOK)
3. 今度は間違えないようにマージをやり直す
- [Code]タブの[branches]タブで復活させたマージ元のブランチの横にある[New pull request]ボタンでプルリク画面を表示する
- マージ先ブランチが間違っていないことをすごくよく確認してプルリクを出してマージする
ローカルで削除したブランチはWeb上では戻せない
戻せたらスゴスギと思う。
プッシュしないでうっかりローカルブランチを削除してしまったから復活させたい!というときは git reflog
と HEAD
で復活させられそう(やっていないけど)
git add
とかしてなくてまだGit管理下にいないファイルはもう無理かも
【Git】削除したブランチは復活できる!Git初心者から中級者になりたい方へ | ジーニアスブログ