1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Azure DevOps Git リポジトリの Pull Request をマージする際、マージのやりかたが4種類あります。それらの使い分けと注意事項をメモ。

Merge types の種類

Complete, abandon, or revert pull requests のところに説明がありますが、Merge type には以下の4種類があります。

  • Basic merge (no fast-forward)
    • 常に merge commit を作ります。fast-forward はしません。すべての commit は維持されます。
  • Squash merge
    • 全コミットを1コミットに squash します。ブランチは直線になります。
  • Rebase and fast-forward
    • リベースして fast-forward します。ブランチは直線になります。
  • Rebase with merge commit
    • リベースしますが、マージするときに merge commit を作ります。

困ること

ここでちょっと困るのは、Git のデフォルトのマージ戦略が無いということです。
Git のデフォルト戦略は、「fast-forward 可能なら fast-forward するが、そうでない場合は merge commit を作る」です。これと同じことは Azure DevOps ではできません。

なので、同じことをしたいなら、「Basic merge」か「Rebase and fast-forward」のいずれかを人間が判断して決めなければなりません。はっきり言ってくそ面倒です。

このポリシ作ってよ >Microsoftさん

使い分け方針

これはプロジェクトごとに方針が異なると思います。できるだけブランチを直線にしたいなら「Rebase and fast-forward」を中心に使うことになりますし、逆にこれを気にせず常にマージコミット作りたいなら「Basic merge」を使うことになります。

私はできるだけブランチを直線にしたいので、以下のような方針を取っています。ちなみに採用している Git ブランチ戦略は、git-flow です。

  • feature ブランチをマージするときは「Rebase and fast-forward」
  • develop ブランチを main ブランチにマージするようなケースは「Basic merge」
1
0
1

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?