しぐまろぐ

勉強したことや読んだ本について書きます。

LGTM後に行うべき「mainブランチのマージと作業ブランチの削除」についてまとめた

はじめに

HappinessChainではmainブランチから作業ブランチを切ってpull requestすることで課題提出を行っています。

LGTMをもらった(approveされた)後に何もせずにいると、mainブランチには作業した内容が含まれませんし、作業ブランチがどんどん増えていってしまいます。

それを防ぐためにapprove後に毎回行っているmainブランチへのマージ作業と作業ブランチの削除作業についてまとめました。

今回は例としてgolf_scoreブランチを作業ブランチとし、このブランチをmainブランチにマージした後、削除していきます。

注意

こちらはあくまでHappiness Chainの課題がapproveされた後に行う操作です。
現場ではmainブランチに勝手にマージしてはいけなかったり、リモートブランチを削除してはいけなかったりとそれぞれルールがあると思いますので、現場のルールに従ってください。

GitHubでmainブランチにマージする

マージはGitHubで行います。

mainブランチへのマージはPull requestsの画面で実行できます。
レビュワーにapproveをもらうと次のような画面が出てくるのでボタンを押します。

merge pull request

Confirm merge

マージすると『Merged』と表示されるようになります。

Merged

GitHubでリモートブランチを削除する

リモートブランチの削除もGitHubから行えます*1

golf_scoreブランチは今回の作業用に作成したブランチで今後使う予定はなく、変更した分はすでに先程mainブランチにマージしたので、削除します。

Delete branch

ターミナルでpullする

ここからの作業はターミナルで行います。

ローカルのmainブランチをリモートの最新のmainブランチと一致させます。
マージコミットを残したくない場合はpullするときに--rebaseをつけます。

$ git checkout main
$ git pull origin main [--rebase]

ローカルでブランチを削除する

まだローカルにはリモート追跡ブランチもローカルブランチも残っている状態です。

$ git branch -a
  golf_score
* main
  remotes/origin/golf_score
  remotes/origin/main

リモート追跡ブランチを削除する

先程GitHubでリモートブランチは削除したので、削除したことをローカルに反映させることでリモート追跡ブランチ(origin/golf_score)を削除します。

$ git fetch --prune
From https://github.com/wsigma21/hc_practice
 - [deleted]         (none)     -> origin/golf_score

これでリモート追跡ブランチは削除されました。

$ git branch -a
  golf_score
* main
  remotes/origin/main

ローカルブランチを削除する

ローカルブランチも削除します。

$ git branch -d golf_score
Deleted branch golf_score (was d8a92de).

これでmainブランチだけになってスッキリしました。

$ git branch -a
* main
  remotes/origin/main

新たな課題に取り組むときは、またmainブランチからブランチを切って作業していきます。

*1:ターミナルで行うことももちろん可能ですが、ここでは例としてGitHub上で行います