2016-09-21 228 views
6

將SourceTree更新爲最新版本後,我正在處理此問題。假設以下情形:Git:在合併過程中無法進行部分提交(SourceTree)

有文件一個ç版本控制之下,只有一個分支。在我的工作拷貝,我做一些更改文件一個所以它變成一個A「以及文件B」。他的工作副本中的其他人對文件進行了更改C - >C'

我登臺並將我的更改提交到文件B只有。所以,我有一個新的版本:一個B 'Ç和工作副本A'B」Ç

另外一個提交修改,所以他搞了一個修訂一個C」並將其推到原點。

然後它來了。當我執行pull操作時,我得到了一些合併更改(C')。並且我想提交包含A,B',C'的修訂。我現在不想做任何修改後的文件A。但是,GIT,SourceTree分別失敗:

致命:無法在合併期間進行部分提交。

直到我放棄或放棄對文件的更改A

我很確定SourceTree的一些以前的版本沒有公開這種行爲。

更新2017/05

它出現在最近SourceTree版本2.0.20.1此問題已得到解決。但是,確保你想更新到這個版本,因爲它包含了很多我真的不喜歡的「bug」(新功能)。

回答

0

fatal:在合併期間無法進行部分提交。

這表示您的合併仍在進行中,可能存在一些您仍需解決的衝突。

請從下拉框中選擇衝突作爲屏幕截圖,您應該能夠看到帶有三角形圖標的衝突文件列表。解決這些問題然後做一個提交應該可以解決你的問題。

enter image description here

這篇文章應該給的如何配置一個簡單的想法,並使用外部工具來解決合併衝突 - How to interactively (visually) resolve conflicts in SourceTree/git

如果仍然無法彌補,你可能藏匿的更改。從原點拉出並應用存儲來修復它。

編輯

您還可以自動使用「自定義操作」的所有這樣的操作。一個示例腳本做一個藏匿>>拉>>申請藏匿複製下面

git -c diff.mnemonicprefix=false -c core.quotepath=false stash save temp 
git -c diff.mnemonicprefix=false -c core.quotepath=false fetch origin 
git -c diff.mnemonicprefix=false -c core.quotepath=false pull origin <<local path goes here>> 
git -c diff.mnemonicprefix=false -c core.quotepath=false submodule update --init --recursive 
git -c diff.mnemonicprefix=false -c core.quotepath=false stash apply [email protected]{0} 
+1

感謝您的回覆。在原始問題中,由於文件A未被更改和提交,因此不存在衝突。我知道我可以隱藏,但我不想每次執行合併時都這樣做。尤其是當這在以前的版本中運行良好時。 –

+0

您也可以使用「自定義操作」自動執行所有此類操作,請參閱編輯 – Arvin

0

下面的答案,這question爲我工作。

「你可以手動刪除。git的/MERGE_HEAD和Git將無法告訴 你只是做了合併。它可以讓你修改以前 承諾在您指數的變化就像平常一樣。「