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でステージングしてもxcodeのGUIから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