2012-06-28 36 views
3

我從origin中提取更新我的本地文件,並且一個文件發生衝突的更改。我解決了衝突,但我不能承諾(本地),因爲混帳仍認爲該文件是相互矛盾的:Git:即使我已經解決了衝突,也不能提交文件

$ git add style.css 

這工作 - 沒有錯誤或任何東西。然後:

$ git commit 

Merge branch 'dev' of [origin] into dev 

Conflicts: 
     [path]/style.css 
# 
# It looks like you may be committing a MERGE. 
# If this is not correct, please remove the file 
#  .git/MERGE_HEAD 
# and try again. 
# 

爲什麼不能正常工作?

+0

當你嘗試'git status'時會顯示什麼? –

+0

它將'style.css'列爲已修改。然而,我甚至試圖完全拋棄這些變化(它們很小),'git commit'仍然說'style.css'是衝突的! – daGUY

+0

這可能只是提交消息。默認消息列出了最後發生衝突的文件。 'git log'顯示合併? – vergenzt

回答

0

好的,所以這在技術上並不能解決原始問題,但它確實解決了這個問題。我所做的是我備份了對style.css的更改,然後將我的本地dev分支重置爲origin/dev。這解決了它認爲的衝突,因爲當地和原產地現在是相同的,但也使我的當地分支落後於此過程。

那麼我只是將我的備份style.css(其中有我最近的更改)與我現在的當前版本進行比較,合併了我的更改並進行了提交。

1

我將解釋主要發生在這裏:

你拉發起的遠程分支的合併(因爲你沒有做使用這會都做了重訂的「-r」標誌衍合)。合併本身有衝突並中止(這也意味着你的拉不完)。現在解決衝突後,您將不得不添加衝突的文件並執行「git commit」來實際完成您的拉(以及爲此所需的合併)。這將刪除提交消息中提到的「.git/MERGE_HEAD」文件,該文件顯示您當前正處於合併過程中。

在此之後,你處於一個乾淨的狀態,一切都應該沒問題。

+1

這聽起來合乎邏輯,但正如你在我的問題中看到的,我確實添加了衝突文件,但它仍然不會讓我提交。除非你說我應該手動刪除'.git/MERGE_HEAD'文件? – daGUY

0

我只是有這個自己,發現這個問題,同時尋找一個解決方案。 「衝突」消息出現在我的默認文本編輯器中。使用gitshell關閉文本編輯器仍然允許完成提交。