マージ競合の解決
レビュー・ブランチがターゲット・ブランチとマージされるときに、Gitでコードの競合を自動的に解決できます。 ただし、競合は手動で解決する必要がある場合があります。
「マージ・リクエスト」ページで、「マージ」ボタンが「マージ競合」ボタンに置き換えられている場合は、マージの競合を示します。
両方のブランチをマージする前に、ターゲットおよびレビュー・ブランチの異なるファイルが更新されると、Gitは競合を自動的に解決します。 マージ競合は、両方のブランチがマージされる前に、同じファイルの同じ行がレビュー・ブランチおよびターゲット・ブランチで更新されると報告されます。 ほとんどのユーザーは、ブラウザベースの競合解消ツールを使用します:
-
コンピュータでGit CLIを開きます。
-
プロジェクトGitリポジトリのクローンをすでに作成している場合、そのディレクトリに移動します。
Gitリポジトリのクローンを作成していない場合は、クローンを作成します。
-
「マージ競合」ダイアログに表示されるコマンドを実行します。
これらのコマンドは、競合を解決し、ファイル内の競合するコード行をマークするのに役立ちます。
-
競合を含む各ファイルをテキスト・エディタで開きます。
競合のあるコンテンツは、
<<<<<<<
、=======
および>>>>>>>
でマークされます。<<<<<<<
と=======
の間の行には、ターゲット分岐からのコードが表示されます。=======
と>>>>>>>
の間の行には、レビュー・ブランチのコードが表示されます。 -
コンテンツをレビューして更新します。 保存する前に、競合する各ファイルから
<<<<<<<
、=======
および>>>>>>>
を必ず削除してください。 -
すべてのファイルを保存してコミットします。
競合しているファイルのステータスを表示するには、
git status
コマンドを実行します。 -
コミットをターゲット・ブランチにプッシュします。
ノート:
コミットをリモート・リポジトリにプッシュしようとしたときに、「Update requires 'Merge-Request' line present in the commit-message」というメッセージが表示された場合は、マージ競合がまったく示されません。 これは、変更をプッシュしているリモート・リポジトリが保護されていることを指します。 MRをマージする前に、リモート・リポジトリの開発ブランチには、コード・レビューの承認のためのマージ制限があります。 「Merge-Request」というテキストで始まる特定のコミット・メッセージでコミットするタグのみを受け入れるように設定されました: ...". リモート・リポジトリはこのように設定されています(レビューが必要)。これにより、すべての変更(コミット)が意図したマージ・リクエスト・ワークフローを通過したことを確認できます。このワークフローでは、すべての変更がプッシュ前にレビューおよび承認されます。
レビュー・ブランチ内の競合するファイルがターゲット・ブランチとマージされるようになりました。 「マージ・リクエスト」ページで追加の操作は必要ありません。