チームでBitbucket Serverの使用を開始しました。プルリクエストの使用を強制して、機能ブランチからメインの統合ブランチへのコミットを取得したいと考えています。これを実施するために、ブランチのプルリクエストなしでマージを防ぐブランチ権限機能をオンにしました。これは、競合するプルリクエストを取得するまで、うまく機能します。
この場合、指示では、ソースブランチのヘッドを手動でフェッチしてターゲットにマージし、これをプッシュするように指示しています。ただし、マージコミットはブランチの権限によって拒否されます!
ここに何か不足していますか、またはブランチ権限を使用しているときに手動でマージすることはできませんか?
残念ながら、この説明はパーミションの特定の組み合わせで少し行き詰まっており、それは私たちが望んでいるものです いつか修正 (私はBitbucketで作業しています)。
この問題を回避するには、ターゲットブランチからの変更をマージして、ソースブランチの競合を解決します。
BitBucketサーバーでは、プルリクエストのマージ中に競合が発生した場合、git bashツールを使用してローカルシステムでそれを解決し、変更をコミットしてリモート機能ブランチにプッシュして、メインブランチにマージできます。
ローカルシステムのgit bashツールでは、次の手順を順番に実行する必要があります。
(1)git bashツールを開いてチェックアウトするか、ローカル機能ブランチに切り替えます。
(2)最新の変更をメインブランチ(たとえば、「マスター」)からフィーチャーブランチにプルします。
git pull Origin master
(3)ローカルの変更により上記のコマンドが失敗した場合は、以下のコマンドを使用してそれらを隠し、そうでない場合は次のステップに進みます。
git stash
に続く -
git pull Origin master
(4)競合が発生した場合、自動マージは失敗するため、手動でマージする必要があります。競合を解決するには、以下のコマンドを使用してください。
git mergetool
デフォルトでは、使用可能なすべてのマージツールが表示され、そのうちの1つが自動的に選択されます。他のツールに非常に慣れていると感じた場合は、それを構成することもできます。競合解決のためにgitがそのツールを開きます。
(5)競合が解決されたら、変更を機能ブランチにコミットします。
git commit
(6)リモート機能ブランチに変更をプッシュします。
git Push
BitBucketサーバーで確認します。プルリクエストは自動的に更新されます。
もう一度マージしてみてください。競合がない場合は、正常にマージされます。
マージの競合が再び発生した場合(ローカルシステムで競合を解決しているときに誰かがメインブランチで新しい変更をコミットした場合)、上記の手順を再度実行して解決します。
上記の手順を順番に実行すると、競合を解決できるはずです。
よろしくお願いいたします。
ダーティ自動マージシナリオに入るとき、ブランチのアクセス許可によるか、自動マージの競合によるものか、feature/bugfixブランチを使用して、次のことを行います。
リポジトリのローカルクローン:
これはCLIにあります:
git checkout <destination branch>
git pull Origin <destination branch on remote>
git checkout -b feature/<my branch description>
git fetch Origin <source branch>
git merge FETCH_HEAD
<fix conflicts>
git stage <changed files>
git commit -m <my message>
git Push Origin feature/<my branch description>
<continue in bitbucket>