storyboardがコンフリクトした時のマージ手順メモ

storyboardがconflictした時のマージ手順メモ。
殆どここの通りGit-のブランチ機能-ブランチとマージの基本


<前提条件>
・masterと機能ブランチfooがある
・カレントディレクトリは機能ブランチfoo<やりたい事>
・masterの最新状態を機能ブランチfooにマージしたい
・conflictした箇所はfooの内容は破棄しmasterを生かしたい
※マージせずconflictする前に戻したいならgit reset --hard HEADで。参考:git-resetは結局何を戻すのか


<手順>
masterの変更をfooにマージ

git merge master


storyboardがconflictし自動マージが失敗する

warning: Cannot merge binary files:xxx/Base.lproj/MainStoryboard.storyboard (HEAD vs. master)
Auto-merging xxx/Base.lproj/MainStoryboard.storyboard
CONFLICT (content): Merge conflict in xxx/Base.lproj/MainStoryboard.storyboard


conflictが発生したxxx.storyboardをエディタで開くと以下のようになっている。
=======の上がローカルの変更、下がmasterの変更となる

<<<<<<< HEAD
xxxxx(ローカルの変更)
=======
yyyyy(リモートの変更)
>>>>>>> master


masterの変更を採用しローカルの変更を取り消したいので<<やHEAD、>>master等の行を削除

yyyyy(リモートの変更)


全ての箇所を同様に修正し保存するが、これだけではxcode上のCマークは消えない為conflictの解決を通知

git add xxx.storyboard


storyboardをaddでステージングしてもxcodeGUIからpush、commitしようとすると、
マージ中のエラーとなったのでterminalからgit commitしてpushした。

fatal: cannot do a partial commit during a merge


<その他>
以下記事を参考に*.storyborad -crlf -diff -mergeを記載した.gitattributeを.gitと同階層に配置したが、
マージ時にHEADの状態が維持されずconflictしてしまった。理由が分かる人教えてください。
iOS開発でGitを利用する際のTips