以前開発している際にUnityでコンフリクトが発生したのでその時のメモです。今回紹介するのはあくまでも解決方法なので詳しいgitの解説は載せていません。
基本的な解消方法は他の言語でも同じですが、Unityで発生したコンフリクトが自分が知っている中では少し特殊だったのでこの記事で残します。
正直下記にあげる点が理解できるなら多分みなくて大丈夫です。
- 基本は通常のスクリプトの対処法と同じ.(Unity上からアクセスできます。)
- SceneやLibraryでコンフリクトが発生している際にはターミナルで移動してエディターを起動する必要がある。
- GitHub上でもできるが今回はコンフリクト件数が多かったため自力で解消
先に言っておくとこれがベストではないので一つの選択肢としてみてください。
コンフリクトの発生
まずコンフリクトが発生するとどうなるのか?
Unity上で発生すると次のような画面になります。全てのオブジェクトがヒエラルキーから消えてしまいました。初めて遭遇したので消えたかと焦りました。
そこでデバッグメッセージを確認するとやはりコンフリクトが発生していたようです。
コンフリクトの対処法
ではまずスクリプトの解消。ここは普通のコンフリクトと同じですが、念のため載せて置きます。
コンフリクが発生したスクリプトを見ると次のような文字列が発生しています。
<<<<<<<<<>>>>>>>>>>>>(特定の文字列)間で囲まれた部分がコンフリクトの発生箇所です。間に=========という文字列があります。ここが対立している部分です。今回は下の部分を採用したいので===上の部分を削除します。
スクリプトは上の対処方法でやれば解決できます。
次にコンフリクトが起きているSceneの解決方法です。基本的にはスクリプトをいじればいいのですが、unity上ではSceneを開くことができません。なのでターミナルを開きます。
$cd project/Assets/Scene
$ls
$DefultSetting.scene
$subl DefultSetting.scene
UnityのSceneまで移動してください。#今回自分はDefultSettingのSceneでコンフリクトが発生したのでそこまでいきます。lsコマンドで確認してみます。そうするとSceneのファイルがあります。そしたら何かしらのエディターを使用してそのファイルに入ります。自分はSublime使用しているのでsublコマンドで入ります。
ファイルを覗いてみるとよくわからない文字列がズラーと並んでいます。後は先程のスクリプトの修正方法と同様===の上の部分を削除します。この際に空白もきちんと消してください(出ないとエラーが直らなかったので)
もしsublコマンドのPATHが通っていなかったら下記のかめさんというデータサイエンティストの記事を参考にしてください。わかりやすいです。
再度コミット
終了したら再度コミットします。これで終了です。
git add .
git commit -m "Solve the conflict"
git push
量が多いのでこれが最善かと言われると微妙な部分がありますが、自分はこちらで対処しました。
半ば強引な所もあるのでないようによっては非効率な部分があると思います。
最後に参考になったサイトを紹介します。
参考資料
Git講座の大定番。このかたがコンフリクトが怖くないと言っていたら、多分諦めている
この記事(回答)を参考に修正しました