【问题标题】:How can I save an incompletely merged index in git?如何在 git 中保存未完全合并的索引?
【发布时间】:2011-01-07 16:06:35
【问题描述】:

我正在处理一个包含多个冲突的冗长合并过程。

我可以做些什么来保存中间状态,以便在灾难发生时定期保存备份?

【问题讨论】:

    标签: git merge patch


    【解决方案1】:

    您可以提交正在进行的工作并将其推送到临时分支的服务器上。但要做到这一点,您必须提交带有冲突标记的文件 (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,您可以让较小的合并工作,然后将它们丢弃并使用重新重新重新数据快速进行大合并。
    【解决方案2】:

    但对于特定情况,不能提交正在进行的合并,这正是我正在寻找的!

    应该可以移动临时.git/MERGE_HEAD(在merging时创建)、提交和恢复.git/MERGE_HEAD

    【讨论】:

      猜你喜欢
      • 2011-11-24
      • 2020-02-16
      • 2012-07-29
      • 1970-01-01
      • 2011-10-09
      • 1970-01-01
      • 1970-01-01
      • 2022-09-23
      • 2012-11-14
      相关资源
      最近更新 更多