Gitを使用していると、どうしてもマージするときにコンフリクトが発生することがあります。
コンフリクトの解消にいくつかの方法がありますが、今回はGitLab上でコンフリクトを解消する方法について解説したいと思います。
前提条件
今回の解説にあたり、以下のようにブランチを作成し、ソースコードを作成・変更しました。
mainブランチ
# コンフリクトのテスト
print("Hello")
test1ブランチ
# コンフリクトのテスト
print("Hello")
print("test1 branch")
add = 1 + 2
print(add)
test2ブランチ
# コンフリクトのテスト
print("Hello")
print("test2 branch")
sub = 4 - 3
print(sub)
test1ブランチをmainブランチにマージした後、test2ブランチをマージしようとした時にコンフリクトが発生するということになります。
では、このようにコンフリクトが発生した場合にどうやってGitLab上で解決するかを解説したいと思います。
GitLab上でコンフリクトを解消する場合
コンフリクト部分の確認
GitLab上でコンフリクトを解消したい場合は、まずコンフリクトメッセージにある『Resolve conflicts』のボタンをクリックします。
ボタンをクリックすると、どのようなコンフリクトが発生しているか画面に表示されます。
『Use ours』で示されている箇所が、マージしようとしていたブランチ(test2ブランチ)のソースコードの箇所です。
『Use theirs』で示されている箇所が、test2ブランチよりも前に変更のあった(test1ブランチのマージによる変更箇所)ソースコードです。
この部分でコンフリクトが発生していることがわかります。
またソースコード部分の画面切り替えができます。
『Side-by-side』をクリックすると、ソースコードを左右で比較できる画面に切り替わります。
適宜変更して、確認しやすい方を使いましょう。
コンフリクト箇所の修正
コンフリクト箇所の修正する方法は2つあります。
操作として簡単なのは、『Interactive mode』です。
『Interactive mode』で修正する場合
コンフリクト箇所について、『Use ours』を使うか、『Use theirs』を使うかクリックで選択して修正する方法です。
下の画像は、『Use ours』を選択している状態です。
どちらか選択すると、『Commit to source branch』ボタンがクリックできるようになります。
Commit messageを適宜変更して、『Commit to source branch』ボタンをクリックしましょう。
『Edit inline』で修正する場合
GitLab上でソースコードを編集して修正する場合は、『Edit inline』を使用します。
『Edit inline』のボタンをクリックすると、下の画像のように表示されます。
<<<<<<<と>>>>>>>で区切られた区間がコンフリクト発生箇所なので、その部分を修正します。
修正ができれば、Commit messageを適宜変更して、『Commit to source branch』ボタンをクリックしましょう。
コンフリクトを解消した後
『Interactive mode』か『Edit inline』でコンフリクトを解消できれば、マージリクエストの画面でも『Merge』ボタンがクリックできるようになっているはずです。
このようにGitLab上でコンフリクトを解消することができます。
簡単な操作でコンフリクトが解消できるので、あまり手数をかけてコンフリクト解消をしたくないという人や、Gitの操作に慣れていないけどコンフリクトを解消をしたいという人にはオススメできる方法だと思います。
コメント