UnityとGitでConflictを起こした時の対処

f:id:nuakam:20181106113724p:plain

UnityとGitでConflictが起きた!
頑張って解消しよう!

Git管理していたUnityプロジェクトでコンフリクトが起きた時の対処

みなさんUnityのチーム開発をするとき何を使っていますか?
Unityは専用のバージョン管理ソフトがあるようですが、私はGit管理しています。


その際のgitconfig設定やgitignoreの内容などなどは、ネットの海に転がっていると思うのでここでは割愛_(:3」∠)_



とりあえずちょくちょく衝突が起こるし、起こった度にググってるので、その対処をメモ。

Conflictが起こるまで~最初のpush~

---ProjectをセーブしてUnity終了 ---
> git status
   hogehoge....
   fugafuga---- 

> git add .
> git checkout -b "Update"
> git commit -m "Update したよ!"
> git push --set-upstream origin feature/Update

ターミナル上では大体こんな感じじゃなかろうか


Updateというローカルブランチを作成して、リモートにも同じブランチを作成しつつpush。


でWebコンソールからメインブランチにPullリクエストすると、オートマージ可能だと「Able to Merge」が出てきます。
ここをワンクリックでマージされます。


コンフリクトがあると、「Can't Auto Merge」がばば~んと出てきます。


うわぁ…めんどくさぁってテンションサゲサゲな表示です。


まずは表示されたStep 1をそのままやる

その前に私は新しいディレクトリにクローンさせてすっきりさせます。

>git clone [クローンするURL]


ここから表示されたStepに沿って解決します

>git checkout -b [新たに作成するローカルブランチ]  [リモートのマージ先ブランチ] 

リモートのマージ先ブランチ... origin/masterとか

git pull [Pull URL]  [リモートのマージをさせたいブランチ]

リモートのマージをさせたいブランチ...先の例でいうUpdateとか


ここで手動マージをします。
フォルダを開いて、Visual Studioなりでコンフリクトを起こしたファイルを開いて、どっちを選択するか一つ一つチェックしていきます。

全部修正して保存し終わったら

git add .
git commit
git checkout [リモートのマージ先ブランチ] 
git merge --no-ff [リモートのマージをさせたいブランチ]
git push [リモートのマージ先ブランチ] 


これで完了!