🕌

Understanding the Benefits of Git Rebase over Git Merge

2023/12/14に公開

Understanding the Benefits of Git Rebase over Git Merge

ブランチのマージとリベースについて

こんにちは、みなさん。今回は、トピックブランチでの作業中にアップストリームが更新された場合のマージ方法についてお話ししたいと思います。

私たちはよく、アップストリームの変更を取り込むために merge コマンドを使用しますが、実は rebase を推奨したいと思います。

なぜかというと、以下の理由があります。

  • コミットを revert する際に問題が発生することがある(実体験)
  • マージコミットを含むと、merge-base などの操作がうまく機能しなくなる
  • GitHub 上での revert は一般的にうまく機能しますが… :innocent:
  • また、rebasepullmerge、*-pick の動作が異なるため、最初は混乱することがありますが、手動での revert が必要になった際には必ず理解しておく必要があります。

というわけで、トピックブランチで作業している皆さんには、アップストリームが更新された際にはなるべく rebase を選択していただきたいというお話でした。

「え、なんで?」と思った方もいるかもしれませんね。

実は、私たちは無意識のうちに merge を行ってしまうことがありますよね。脳が休んでる状態で気づかずに行ってしまうこともあります。これからは注意しましょう!

私自身も最近、コンフリクトと格闘していて、もしも rebase をしていたらこの作業は必要なかったのになぁと感じています。

他にも、こんな便利な方法がありますよーというものはありますか?:thinking_face:

***-pick

これは、いつも「これはもう無理!」と思って、試したことがないマンです。

他にも、こんな便利な方法がある?:thinking_face:

それは何か関連がありますか?すぐには思いつきませんねー。

GitHub を使用しているので、多くの手間が省けることを幸いに思っています。(ブランチの削除や Revert、CRLF など)

(私も元々 rebase 以外には詳しくありませんでしたが)

(数年前に最後に merge を行ったのはかなり昔の話です)

私はすべてを rebase で解決してきました。

コンフリクトが発生した場合、考えると rebase だけで頑張るしかないと思います〜

そして、稀に遭遇する "rerere のおじさん" もいますね。

私はコンフリクト解消のために、数段階の rerere を持っているので、 rerere データベースはかなり充実しているはずです...

間違った解消を行った時に、reset で戻った際に rerere でハマることが稀にありました。笑

稀によくあることですね。

さて、私が参考にした情報はこちらです。

そろそろ記事をまとめて公開します。

まさかこんな情報をどこから持ってきたのでしょうか(笑)

あと、ゲロ吐いた記憶はなかなか忘れられませんね〜(正確には吐かされたことを覚えているかな〜)

以上、ブランチのマージとリベースに関するお話でした。気をつけて作業を進めましょう!

何かご質問がありますか?

Nicosys Tech blog

Discussion