Git の fast forward とブランチの管理
特定の状況において、チェックアウトしたブランチよりも進行しているブランチをマージすると、Git が fast-forward を行う場合があります。次のような、ブランチとそれらのマージのシナリオがあったとします。
緑色のブランチと青色の master ブランチの両方で、履歴に 45tP2 コミットがあります。ブランチには、マージ前に 1 つ (または複数) のコミットがありました。ブランチはマージの時点で、master よりも進んでいます。master にはコミットがなく、ブランチからの分岐はありません。
マージの時点で、Git はこの状況を認識しています。そのため、master ブランチのポインタを fast-forward して、マージされたコメントに対応させます。マージ メッセージに、fast-forward についての通知が記載されます。
git merge greenbranch
Updating 45tP..56tk9
Fast forward
some.src | 1 −
1 files changed, 0 insertions(+), 1 deletions(−)
After the merge, users can delete the branch as it no longer needed – the master points to the same place. This is perfectly acceptable if the branch was never pushed to the remote Bitbucket Cloud repository.
non-fast-forward マージとは、master ブランチに、ブランチ ポイント間の変更や、master へのマージが存在する場合のマージ方法です。この場合、ユーザーはマージではなくリベースによって fast-forward のシミュレーションを行うことができます。リベースは一部のコミットを放棄し、新しく作成することで機能します。
リベースを行うと、公開リポジトリでの作業で問題が発生する可能性があります。協同作業者に追加のマージ作業が発生する可能性があります。この問題は、事前に防ぐことができます。この操作は、「ブランチ権限」ダイアログで行います。
プッシュ機能を制限する
ブランチにプッシュできるユーザーを制限するルールを設定できます。たとえば、特定のユーザー グループにのみ master ブランチへのプッシュを許可することができます。ワイルドカードを使用してブランチ名を定義できます。ワイルドカードを使用すると、一連のブランチ間で適用されるルールをセットアップできます。
たとえば、バグ修正には契約社員が、フィーチャー ブランチでの作業には開発チームが携わっているとします。課題名を使用して、バグ修正ブランチに名前を付けます。フィーチャー ブランチに feat-
という接頭辞を付けます。この方法の詳細については、「ブランチ権限」を参照してください。