【发布时间】:2011-01-07 16:06:35
【问题描述】:
我正在处理一个包含多个冲突的冗长合并过程。
我可以做些什么来保存中间状态,以便在灾难发生时定期保存备份?
【问题讨论】:
我正在处理一个包含多个冲突的冗长合并过程。
我可以做些什么来保存中间状态,以便在灾难发生时定期保存备份?
【问题讨论】:
您可以提交正在进行的工作并将其推送到临时分支的服务器上。但要做到这一点,您必须提交带有冲突标记的文件 (git add . ; git commit)。我建议你不要这样做,因为当你回到合并时很容易错过一个冲突的地方。您也可以尝试压缩正在进行的合并 (git squash save),但我不知道是否可以在服务器上推送压缩引用。
另一种选择是尝试将复杂的合并拆分为更小的块,并推动每个中间合并。
例如,如果您有以下历史记录:
*---*---*---*---*---*---*---*---*---A
\
\--*---0---1---2---3---4---5---B
并尝试将B合并到A中,您可以通过首先合并0,然后1,然后2,然后3,...然后最后B(0,1,2,...可能不是连续提交,但在 B 分支中有一些重要的里程碑)。
这是我们在进行复杂合并时使用的策略。合并的分支在合并过程中可能处于不可用状态,所以不要直接推送到 A,而是推送到另一个分支(A-B-merge),然后在合并完成后,将所有内容推送到 A。
【讨论】:
git re-re-re,您可以让较小的合并工作,然后将它们丢弃并使用重新重新重新数据快速进行大合并。
但对于特定情况,不能提交正在进行的合并,这正是我正在寻找的!
应该可以移动临时.git/MERGE_HEAD(在merging时创建)、提交和恢复.git/MERGE_HEAD。
【讨论】: