Git:在合并期间无法进行部分提交(SourceTree)

时间:2016-09-21 12:19:23

标签: git version-control git-merge atlassian-sourcetree

将SourceTree更新为最新版本后,我正在解决这个问题。假设以下情形:

版本控制下有文件 A B C ,只有一个分支。在我的工作副本中,我对文件 A 进行了一些更改,因此它变为 A'以及文件 B 变为 B'即可。其工作副本中的其他人对文件进行了更改 C - >的 C'

我暂停并将更改提交到 B only 文件。所以我有一个新版本: A B' C 和工作副本 A' B' C

另一个提交他的更改,因此他修改 A B C'并将其推送到原点。< / p>

它来了。当我执行拉动时,我会进行一些合并更改( C')。我想提交由 A B' C'组成的修订版。我现在不想对修改后的文件 A 做任何事情。但是,GIT,SourceTree等也失败了:

  

致命:在合并期间无法进行部分提交。

直到我暂停或放弃对文件 A 的更改。

我很确定SourceTree的某些先前版本没有暴露这种行为。

更新2017/05

它出现在最新的SourceTree版本2.0.20.1中,此问题已得到解决。但是,请确保您要更新到此版本,因为它包含许多我不喜欢的“错误”(新功能)。

2 个答案:

答案 0 :(得分:1)

  

致命:在合并期间无法进行部分提交。

这表示您的合并仍在进行中,可能存在一些您仍需要解决的冲突。

请从下拉框中选择 Conflicts 作为屏幕截图,您应该能够看到带有三角形图标的冲突文件列表。解决这些问题然后进行提交应该可以解决您的问题。

enter image description here

这篇文章应该简要介绍如何配置和使用外部工具来解决合并冲突 - How to interactively (visually) resolve conflicts in SourceTree / git

如果仍然无法弥补,您可以隐藏更改。从原点拉出并使用藏匿来修复它。

编辑

您还可以使用&#34;自定义操作&#34;自动执行所有此类操作。一个用于存储的示例脚本&gt;&gt;拉&gt;&gt; apply stash复制在

下面
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 stash@{0}

答案 1 :(得分:0)

以下question的答案对我有用。

  

“您可以手动删除 .git / MERGE_HEAD ,Git将无法分辨   你刚刚合并。它会让你修改以前的   像正常一样提交索引中的更改。“