Git の fast forward とブランチの管理

特定の状況において、チェック アウトしたブランチよりも進行しているブランチをマージすると、Git が fast-forward を行う場合があります。次のような、ブランチとそれらのマージのシナリオがあったとします。

緑のブランチと青の main ブランチ両方の履歴に 45tP2 コミットがあります。ブランチにはマージ前に、1 つ (または複数) のコミットがありました。ブランチはマージの時点で、main ブランチよりも進んでいます。main ブランチにはコミットがなく、ブランチからの分岐はありません。 

マージの時点で Git はこの状況を認識しています。そのため、main ブランチのポインタを fast-forward してマージされたコミットに対応させます。マージ メッセージに fast-forward についての通知が記載されます。

1 2 3 4 5 git merge greenbranch Updating 45tP..56tk9 Fast forward some.src | 1 − 1 files changed, 0 insertions(+), 1 deletions(−)

マージ後、ユーザーは不要になったブランチを削除できます。main ブランチは同じ場所を示します。これは、ブランチがリモート Bitbucket Cloud リポジトリにプッシュされたことがない場合に最適です。

non-fast-forward マージとは、main ブランチがブランチ ポイントと main ブランチへのマージ バック間で変更を行った場合のマージ方法です。この場合、ユーザーはマージではなくリベースによって fast-forward をシミュレーションできます。リベースは、一部のコミットを放棄して新しく作成することで機能します。

リベースを行うと、公開リポジトリでの作業で問題が発生する可能性があります。協同作業者に追加のマージ作業が発生する可能性があります。この問題は、事前に防ぐことができます。この操作は、「ブランチ権限」ダイアログで行います。  

プッシュ機能を制限する 

ブランチにプッシュできるユーザーを制限するルールを設定できます。たとえば、特定のユーザー グループにのみ main ブランチへのプッシュを許可できます。ワイルドカードを使用してブランチ名を定義できます。ワイルドカードを使用すると、一連のブランチ全体で適用されるルールを設定できます。  

たとえば、バグ修正には契約社員が、フィーチャー ブランチでの作業には開発チームが携わっているとします。このような場合は、課題名を使用してバグ修正ブランチに名前を付けます。フィーチャー ブランチに feat- という接頭辞を付けます。この方法の詳細については、「ブランチ権限」を参照してください。

その他のヘルプ