0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

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

コンフリクト発生時の確認の仕方

例を見た方が手っ取り早いと思うので、コンフリクトを意図的に発生させてみた。
コードはコンフリクトが発生させれば何でも良いのスタンスなので、適当です。
スクリーンショット 2024-06-29 19.39.15.png

・<<<<<<< HEAD
 現在のブランチの内容
・>>>>>>> マージ先の他ブランチ名
 マージ先の他ブランチ名の内容

上記のように、<<<<<<< とか HEAD とかのように検索するとコンフリクト箇所が分かると思います。

コンフリクト対応の方法

1.手作業で解消

アナログなようだが一つの方法ではある。
GitHubの公式手順を確認したが、手作業でやる手順について記載されていたので以下参照。
 コマンド ラインを使用してマージ コンフリクトを解決する

コンフリクト発生時はビルドエラーが発生する状態のため、
<<<<<<< HEAD と >>>>>>> マージ先の他ブランチ名 の部分を確認し、適切に手作業でマージする必要がある。

2.Source Treeを使って解消

右クリック > 競合を解決 > 外部マージツールを起動
スクリーンショット 2024-06-29 20.24.24.png

おそらくデフォルトのマージツールが起動するはず

この外部マージツールをカスタマイズすることで任意のツールを使用することができる。
しかし、WindowsであるならFile Mergeとか優秀な無料ツールが転がっているが、
Macだと有料版も結構多いし無料版のアプリは微妙なやつ多し。。

無料版だと、Xcodeに付属しているFileMergeが可もなく不可もなく、

3.Android Studioを使って解消

①iOSアプリのビルド環境一式(何なら.gitがある先頭ディレクトリ)をAndroid Studioで開く

②Git > Resolbe Conflicts...
スクリーンショット 2024-06-29 19.41.05.png

③Conflicts画面でコンフリクト対象のファイル一覧が表示されるので、マージしたファイルを選択し"Merge"ボタンをクリック
スクリーンショット 2024-06-29 19.42.16.png

④3面で比較しながらマージすることができる
・左:現在のブランチの内容
・真ん中:マージ結果
・右:マージ先の他ブランチの内容
スクリーンショット 2024-06-29 19.43.13.png

⑤マージ
・現在のブランチの内容を取り込む場合は >> 、もしくは マージ先の他ブランチの内容を取り込む場合は << をクリックし、マージする
・(採用しない場合はバツボタンを押下)
・真ん中のマージ結果は普通に編集できるので、左右の内容を目視で確認しながらマージすることも可能
スクリーンショット 2024-06-29 19.43.55.png

以上!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?