8
5

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 1 year has passed since last update.

GitLabで意図せずブランチを削除してしまった時の対処法

Last updated at Posted at 2022-09-26

TL;DR

先日、GitLabでマージする際に削除したくない共有ブランチを削除してしまった時に、GitHubやローカルでブランチを削除した際の対処法の記事は多く見受けられたのですが、GitLabに関する記事が少なかった(日本語はない?)ので備忘録として投稿します。
急いでいる方は、解決策のところだけお読みください。

背景

現在、長期インターンシップでエンジニアとしてシステム開発をしていますが、その開発形態として

  1. タスクを振ってもらう。(この機能追加して〜。このバグ修正して〜。など)
  2. 開発環境ブランチからそのタスク用のブランチを作成し、実装する。
  3. 実装できたらマージリクエストをしてレビューしてもらう。

という流れを繰り返して進めています。
そこであるタスクについて実装中に、「開発環境ブランチにいくつかマージしました〜。」という連絡を受けたので、「マージリクエストの際にコンフリクト起きるの嫌だな〜」と思ったので、実装を一時退避して現在のタスク用のブランチにマージしようとお気持ちで、GitLabで開発環境ブランチからタスク用ブランチのマージリクエストを作成し、マージしました。そしてマージ完了の文字と共に戦慄する文字(Deleted the source branch.)が並んでいました...。
メモ1-146.jpg

原因

マージリクエストを作成した後、マージするときにDelete source branchというチェック項目があり、こちらをチェックにすることでマージ後にソースブランチが削除されるようになります。こちらデフォルトでチェックが入っていることに気づかず、マージしてしまったのが原因です。
メモ1-147.jpg

解決策

削除前のブランチのcommitSHAを元に新たにブランチを作成することで元のブランチが復活します。

具体的な手順

  1. 落ち着く。
    焦ってはさらに大きなミスにつながるかもしれないので大きく深呼吸しましょう。
  2. マージしたターゲットブランチのHistoryを開く。
    メモ1-149.jpg
  3. ソースブランチだったコミット(マージしたコミットの一つ前のコミット)のcommitSHAをコピーする。(右のボタンでもコピー可能)メモ1-150.jpg
  4. ブランチを新規作成画面でブランチ名にソースブランチの名前を入力し、Create fromの部分をクリックして検索ボックスの部分に先ほどのcommitSHAを入力しEnterを押し、Create branchする。メモ1-151.jpg

この手順で元のソースブランチは復活します。

お気持ち

GitHubではマージ処理を元に戻すボタンがあるようですが、なぜGitLabにはないのでしょうか...。(open issueになっているようなので是非はやく実装してもらいたい。)
また、デフォルトでDelete source branchにチェックが入っているのがどうなんだろうという気持ちです。(共同のリポジトリでも個人のリポジトリでもソースブランチを消したいと思うタイミングに遭遇したことがない。)

参考

8
5
3

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
8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?