Xcodeのrepositoryでブランチを作成する時にブランチ元を間違えて指定してしまってコンフリクトが起こりまくってしまったので対処しました。
状況
直前のversion1.2を元にversion1.4を作るところを、masterを元にversion1.4を作ってしまいました。
その結果、こんなふうにコンフリクトがでまくってしまいました。
コンフリクトマークは”C”です。
間違ってブランチを作っただけなので、強制的に全て解決済にします。
■ File > Source Control > Mark as Resolved
これで全てのコンフリクトが解決すれば ブランチを変更して間違って作成したブランチを削除できます。しかし、今回はXcodeのファイルナビゲータから見えないXcodeの状態管理ファイルがgitの管理対象になってしまっていてそのファイルのコンフリクトがどうしてもXcode上から解決できなかったのでターミナルで対処しました。
今回使ったgitコマンド
|
現在の状態を表示 |
|
コミット |
|
現在のブランチを表示 |
|
ブランチの変更 |
|
コンフリクトしているファイルのマージ |
|
管理対象外にする |
ブランチの変更
ターミナルからブランチを変更してもXcodeのオーガナイザで操作した時と同じ”error: you need to resolve your current index first“というエラーがでました。そこで強制的にマージしてブランチを変更しました。
実施例)
#現在のブランチを確認 $ git branch master version1.01 version1.1 * version1.2 version1.4 #version1.4ブランチに変更 $ git checkout version1.4 PasteShogiban.xcodeproj/project.xcworkspace/xcuserdata/tak.xcuserdatad/UserInterfaceState.xcuserstate: needs merge PasteShogiban.xcodeproj/xcuserdata/tak.xcuserdatad/xcschemes/PasteShogiban.xcscheme: needs merge error: you need to resolve your current index first #強制的にマージ $ git add -u #再度version1.4ブランチに変更 $ git checkout version1.4 M PasteShogiban.xcodeproj/project.xcworkspace/xcuserdata/tak.xcuserdatad/UserInterfaceState.xcuserstate Switched to branch 'version1.4' #現在のブランチを確認 $ git branch master version1.01 version1.1 version1.2 * version1.4
ファイルを管理対象外にする方法
- 対象外一覧のファイルに登録
- 既に管理対象になってしまったいるファイルを削除
対象外一覧のファイルに登録
対象外一覧ファイル:.gitignore
git 管理しているプロジェクトのトップフォルダに上記のファイルを作成する
作成例)
$ echo PasteShogiban.xcodeproj/〜省略〜/UserInterfaceState.xcuserstate > .gitignore
既に管理対象になってしまっているファイルを除外
コマンド:git rm -r --cached ファイル名
実施例)
$ git rm -r --cached PasteShogiban.xcodeproj/project.xcworkspace/xcuserdata/tak.xcuserdatad/UserInterfaceState.xcuserstate rm 'PasteShogiban.xcodeproj/project.xcworkspace/xcuserdata/tak.xcuserdatad/UserInterfaceState.xcuserstate' $ git status # On branch version1.4 # Changes to be committed: # (use "git reset HEAD..." to unstage) # # deleted: PasteShogiban.xcodeproj/project.xcworkspace/xcuserdata/tak.xcuserdatad/UserInterfaceState.xcuserstate # # Untracked files: # (use "git add ..." to include in what will be committed) # # .DS_Store # .gitignore $ git commit -m 'ignore status file' #除外操作をコミット [version1.4 2737034] ignore status file 1 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 PasteShogiban.xcodeproj/project.xcworkspace/xcuserdata/tak.xcuserdatad/UserInterfaceState.xcuserstate
関連記事
- 2012/01/13 Xcode4でアプリのバージョン管理
- 2012/02/22 Xcodeでスナップショットから復元する方法
- 2012/04/19 Xcodeのソース管理で無理やりコミット