2012-08-30 167 views
3

我有一個項目,我一直在Xcode 4.4.1中工作,並希望回到以前的分支。 (注分支機構並不複雜,但表示線性發展)Git幫助UserInterfaceState.xcuserstate:警告:合併衝突:文件仍然標記爲衝突

當我選擇了前面的分支出現警告

UserInterfaceState.xcuserstate: warning: Merge conflict: File still marked as conflicted 

一切看起來正常,但所有的構建和運行的菜單項顯示爲灰色,所以我什麼都做不了。

我試圖恢復到最新的分支,這看起來不錯,但仍然有合併衝突 MyProject.xcodeproj/project.xcworkspace/xcuserdata/ian.xcuserdatad/UserInterfaceState.xcuserstate:警告:合併衝突:文件仍然標記爲衝突

我已經嘗試了git的地位,這並沒有幫助

# Unmerged paths: 
... 
# deleted by them: MyProject.xcodeproj/project.xcworkspace/xcuserdata/ian.xcuserdatad/UserInterfaceState.xcuserstate 
# 
# Changes not staged for commit: 
... 
# 
# deleted: MyProject.xcodeproj/xcuserdata/ian.xcuserdatad/xcschemes/QuollEyeTree.xcscheme 

我嘗試了git的重置頭,但是這似乎並沒有幫助,我不知道哪裏去了從這裏。

Git可以方便地檢查以前版本的代碼,但每當我嘗試交換版本時都會遇到麻煩。

當我嘗試創建工作區並添加其他項目時,我目前的問題似乎已經加劇。 原始項目是在Xcode 3下創建的,項目和文件緊接在項目目錄下。

編輯 - 已解決

的答案下面並沒有解決問題,但雙方都有益。

我救了我的代碼從項目目錄,與

git reset --hard HEAD~1 

除去最新的分支,然後複製更改的文件返回給項目目錄

我也更新了我的.gitignore(我想我之前已經完成)

回答

5

當發生合併衝突時,必須首先解決它。 (也許你可以運行git merge --abort來恢復)。

所以這個過程是你打開你的衝突文件,你尋找衝突,解決它(編輯衝突的行),然後保存你的文件,添加它(使用git add -u)並提交它。

然後你可以在乾淨的工作目錄上工作。

順便說,衝突可能是這樣的:

<<<<<<< yours:sample.txt 
Conflict resolution is hard; 
let's go shopping. 
======= 
Git makes conflict resolution easy. 
>>>>>>> theirs:sample.txt 

參考:http://www.kernel.org/pub/software/scm/git/docs/git-merge.html

+0

我明白解決衝突,但我如何做到這一點MyProject.xcodeproj/project.xcworkspace這不顯示在Xcode PS該參考看起來很有用 – Milliways

+0

我想你應該看看列出的不同文件,可能有一個衝突。如果沒有,只需將它們分階段提交(即運行'git add')並提交。您可以在提交之前運行diff以確保衝突得到解決。如果文件被刪除,你可以使用'git reset'。我不記得你應該如何使用它,但你可以查找它的參考文檔。 – Vince

1

首先,使新增*.xcuserstate和模式的一個很好的習慣,忽略其他用戶特定的項目文件你的.gitignore。 .gitignore文件有一個流行的github回購,其中包括Xcode項目。

除了解決合併衝突(如上所述)之外,您還應該養成一個很好的習慣,在檢出不同的頭部(分支,標籤等)時存儲您的更改。

+0

你的意思是https://github.com/github/gitignore? – fractious

4

運行

git mergetool 

和解決衝突的解決了這個問題對我來說。

作爲一個便箋,我使用Command-D導航到衝突,在FileMerge的右下角選擇一邊,然後Command-S Command-Q(在Mac上)完成保存並退出。

+0

謝謝你!這完全適合我:D – Kets

16

我在解決衝突後遇到了同樣的問題,這就是我解決它的方法。 如果使用Xcode中保持跟蹤你的git回購的請嘗試以下操作。 1.我解決了所有的衝突,然後保存瞭解決的文件。 2.轉到文件 - >源代碼管理 - >標記爲已解決

Voila Xcode不再識別這些文件爲衝突。希望這適用於某人。

+0

謝謝你!這是我猜想的最佳解決方案,並且像魅力一樣工作。 – ppalancica