LoginSignup
20
19

More than 3 years have passed since last update.

GitHubで誤って違うブランチにマージしてしまった時にWeb上だけで戻す方法

Posted at

状況

  1. masterとブランチAは同じコミット上にいる
  2. ブランチAを親ブランチとしてブランチBを作った
  3. ブランチBでソースをゴニョゴニョいじってコミット&プッシュした
  4. GitHubのWebでブランチBをブランチAにマージしようとして、:boom:誤ってmasterにプルリク出してマージしてしまった:boom:
  5. 間違いに気が付かずにWeb(リモート)でブランチBを削除した
  6. 間違いに気が付かずにローカルでブランチBを削除した
  7. クライアントツールの樹形図を見ていて間違いに気がついた:biohazard:

Web上だけで戻す(revert)方法

1. リモートで削除してしまったマージ元のブランチを復活させる

  1. [Pull Request]タブを開いて[Filters]に入力されている「is:open」を削除してEnter
  2. a.gif
  3. マージ済みのプルリクが表示されるので、間違ったマージを選択して開く
  4. 削除してしまったマージ元のブランチの横にある[Restore branch]ボタンでブランチを復活させる
  5. a.gif

2. マージを戻す

  1. マージしたところの横にある[Revert]ボタンで「マージを戻す用のプルリク」を作る
  2. a.gif

  3. ここで revert-{誤ったプルリクの番号}-{マージ元のブランチ名} というフォーマットの「マージを戻す用のブランチ」が自動で作成される

  4. 「マージを戻す用のプルリク」をマージする

  5. 「マージを戻す用のブランチ」を削除する(とっておきたかったら削除しなくてもOK)

3. 今度は間違えないようにマージをやり直す

  1. [Code]タブの[branches]タブで復活させたマージ元のブランチの横にある[New pull request]ボタンでプルリク画面を表示する
  2. マージ先ブランチが間違っていないことをすごくよく確認してプルリクを出してマージする

ローカルで削除したブランチはWeb上では戻せない

戻せたらスゴスギと思う。
プッシュしないでうっかりローカルブランチを削除してしまったから復活させたい!というときは git reflogHEAD で復活させられそう(やっていないけど)
git add とかしてなくてまだGit管理下にいないファイルはもう無理かも
【Git】削除したブランチは復活できる!Git初心者から中級者になりたい方へ | ジーニアスブログ

20
19
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
20
19