はじめに
Gitを使用して開発していると、どうしてもコンフリクトが発生する可能性がある。
この辺りのコンフリクト解消手順について記載していく。
特にiOSアプリ開発なのに、Android Studioを使用してコンフリクト解消する方法も最後の方で記載するので、面白いかも。
前提とする環境は以下の通り
・MAC OS: 14.5 (Sonoma)
・Xcode:15.4
・git version 2.39.3 (Apple Git-146)
・Source tree:4.2.8(265)
・Android Studio:Koala | 2024.1.1
コンフリクト発生時の確認の仕方
例を見た方が手っ取り早いと思うので、コンフリクトを意図的に発生させてみた。
コードはコンフリクトが発生させれば何でも良いのスタンスなので、適当です。
・<<<<<<< HEAD
現在のブランチの内容
・>>>>>>> マージ先の他ブランチ名
マージ先の他ブランチ名の内容
上記のように、<<<<<<< とか HEAD とかのように検索するとコンフリクト箇所が分かると思います。
コンフリクト対応の方法
1.手作業で解消
アナログなようだが一つの方法ではある。
GitHubの公式手順を確認したが、手作業でやる手順について記載されていたので以下参照。
コマンド ラインを使用してマージ コンフリクトを解決する
コンフリクト発生時はビルドエラーが発生する状態のため、
<<<<<<< HEAD と >>>>>>> マージ先の他ブランチ名 の部分を確認し、適切に手作業でマージする必要がある。
2.Source Treeを使って解消
おそらくデフォルトのマージツールが起動するはず
この外部マージツールをカスタマイズすることで任意のツールを使用することができる。
しかし、WindowsであるならFile Mergeとか優秀な無料ツールが転がっているが、
Macだと有料版も結構多いし無料版のアプリは微妙なやつ多し。。
無料版だと、Xcodeに付属しているFileMergeが可もなく不可もなく、
3.Android Studioを使って解消
①iOSアプリのビルド環境一式(何なら.gitがある先頭ディレクトリ)をAndroid Studioで開く
③Conflicts画面でコンフリクト対象のファイル一覧が表示されるので、マージしたファイルを選択し"Merge"ボタンをクリック
④3面で比較しながらマージすることができる
・左:現在のブランチの内容
・真ん中:マージ結果
・右:マージ先の他ブランチの内容
⑤マージ
・現在のブランチの内容を取り込む場合は >> 、もしくは マージ先の他ブランチの内容を取り込む場合は << をクリックし、マージする
・(採用しない場合はバツボタンを押下)
・真ん中のマージ結果は普通に編集できるので、左右の内容を目視で確認しながらマージすることも可能
以上!