2016-09-21 2132 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将无法告诉 你只是做了合并。它可以让你修改以前 承诺在您指数的变化就像平常一样。“