在不完整的合并期间存储更改

时间:2016-08-19 19:27:33

标签: git merge-conflict-resolution sourcetree

我一直在与另一位远程开发人员合作开发一个功能分支。我们已经完成了这个分支的工作,现在想把它合并回master。我们遇到了不少冲突。有一些我已经处理过的文件,我知道如何处理这些冲突,并且他已经处理了某些文件,他将知道如何解决这些冲突。

我的问题是,有什么方法可以开始合并,修复我能够解决的冲突,然后在仍处于合并状态时远程存储功能分支?那时他可以接管并完成合并?通常情况下,我们只能进行屏幕共享,但他处于一个完全不同的时区。

我正在使用SourceTree,只是稍微熟悉使用git bash。

2 个答案:

答案 0 :(得分:0)

这个问题的答案实际上取决于你如何使用git。

假设文件未在功能分支中提交,您可以将它们存储在那里,我会使用:

git stash --patch

  • 这将以交互方式允许您 存储您需要与同事发生冲突的文件 合并,同时保留您知道如何解决的所有文件。然后 您可以根据您知道如何解决的方式执行合并。当你 准备合并我将使用的隐藏更改" git stash apply", 所以你藏匿的版本将保留在列表中。

  • 我唯一担心的是你们两个人都在肮脏地工作。 目录,如果可以存储更改,则尚未提交。如果你 我建议,两者都在你的功能分支中处于稳定状态 你提交你的更改。然后当你与主人合并时,它会 创建冲突文件,您的同事可以在以后解决。

答案 1 :(得分:0)

我认为您可以使用rename来记录您的冲突解决方案,将其交给您的同事,他们可以应用它们,然后解决剩余的冲突。

要启用git config rerere.enabled true,首先需要执行git rerere。从那时起,所有冲突解决方案都由git记录并在再次发生相同冲突时应用。您可以阅读有关该功能的更多信息git rerere

启用rerere后,您可以开始执行合并并解决您能够解决的冲突。完成后调用Recorded resolution for 'your-conflict.txt'. Recorded preimage for 'co-worker-conflict.txt' 会给你一些输出:

Resolved 'your-conflict.txt' using previous resolution.
Recorded preimage for 'co-worker-conflict.txt'

其中 your-conflict.txt 是您解决冲突的文件,而 co-worker-conflict.txt 是您的同事需要的文件解决。

冲突解决方案存储在.git / rr-cache /文件夹中。您可以将此文件夹的内容发送给您的同事,并将它们放在同一个文件夹中。

当他之后开始你之前做过的同样的合并时,他会得到这样的输出:

git add

意味着已经应用了文件 your-conflict.txt 的解决方案,并且仍然缺少文件 co-worker-conflict.txt 的解决方案。文件 your-conflict.txt 将在"未合并"状态,但所有冲突都已解决,只能# Uses python3 import sys def hcf(x, y): while(y): x, y = y, x % y return x a,b = map(int,sys.stdin.readline().split()) res=int(((a*b)/hcf(a,b))) print(res)

由于我不能100%确定rr-cache文件夹的内部,我会在记录解决方案之前以及在将文件应用到您的同事存储库之前将其清空。如果你想经常这样做,可能会以某种方式共享rr-cache文件夹,例如如here中所述。