Devという名前のブランチを作成しました。
開発者コードをマスターに送信するプルリクエストを実行しましたが、このプルリクエストを実行すると、次のように表示されます。
50以上の競合により、「次の手順:これらの競合を手動で解決し、新しい変更をソースブランチにプッシュする」自動マージが妨げられます。
ここからどこに行きますか?すべてのdevブランチでmasterにあるものを置き換えたいだけです。これらの競合を解決するオプションはありません。
PCで次のことを行う必要があります
ブランチdev
$ git pull Origin master
-これによりマージコミットが作成され、devとmasterの両方で変更されたファイルの競合を解決する必要があります。 git status
は、変更が競合するファイルのリストを表示します。
競合を解決した後、すべての変更をコミットし、ブランチを強制的にプッシュします。その後、PRを完了することができます。
dev
ブランチのファイルバージョンを保持する必要があるため(ターゲットブランチmaster
のファイルを変更する間、ソースブランチを保持します)、競合ファイルを解決するにはmaster
ブランチを変更する必要があります。 、およびmaster
ブランチに変更をプッシュする権限があることを確認してください。
以下のオプションを使用できます。
ローカルリポジトリでは、以下のコマンドを実行してdev
ブランチをmaster
ブランチにマージしながら、dev
ブランチとして競合ファイルバージョンを保持できます。
git checkout master
git merge dev -X theirs
git Push Origin master
また、作成した既存のプルリクエストでは、ブランチがマージされたことが表示されます。したがって、プルリクエストを放棄できます。
以下のコマンドを使用して、master
ブランチの競合を解決できます。
# In yout local repo
git checkout master
git checkout dev -- .
git commit -m 'replace master branch version by dev for the conflict files'
git Push Origin master
一方、新しいコミットがターゲットブランチ(マスター)にプッシュされた場合、既存のプルリクエストの変更は更新されません。また、同様のレポートを見つけることができます PRからのコミットが別のブランチを介してターゲットにマージされると、プル要求の差分は更新されません 。
つまり、Webページのプルリクエストにはまだ競合が表示されます。 devをmasterブランチにマージするには、既存のプルリクエストを破棄して再アクティブ化(または新しいリクエストを作成)する必要があります。
私はrebase
をしなければなりませんでした。すべてのコミットを確認し、変更を適用する必要がありました-それらは非常に広範囲で、名前空間やメソッド名などの名前を変更しました。これにより、Azure DevOpsポータルで引き続きPull Request
を実行できました。実際、既存のPull Request
の変更を更新するだけで、自動マージの競合は解決されました。
コードをマージしても問題は解決せず、rebase
のみが機能しました。