git - 如何在 git 中保存未完全 merge 的索引?

标签 git merge patch

我正在处理一个有几个冲突的漫长 merge 过程。

如何保存中间状态,以便在灾难发生时定期保留备份?

最佳答案

您可以提交正在进行的工作并将其推送到临时分支中的服务器上。但要做到这一点,您必须提交带有冲突标记的文件 (git add . ; git commit)。而且我会建议您不要这样做,因为当您返回 merge 时很容易错过冲突的地方之一。您也可以尝试压缩正在进行的 merge (git squash save),但我不知道是否可以在服务器上推送压缩引用。

另一种选择是尝试将复杂的 merge 拆分为更小的 block ,并 push 每个中间 merge 。

例如,如果您有以下历史:

*---*---*---*---*---*---*---*---*---A
    \
     \--*---0---1---2---3---4---5---B

然后尝试将 B merge 到 A 中,您可以先 merge 0,然后 merge 1,然后 merge 2,然后 merge 3,...最后 merge B(0, 1, 2, ... 可能不是连续提交,但在 B 分支中有一些重要的里程碑)。

这是我们在进行复杂 merge 时使用的策略。 merge 后的分支可能在这些 merge 过程中不处于可工作状态,所以不要直接推送到 A,而是推送到另一个分支(A-B-merge),然后在 merge 完成后,将所有内容推送到 A。

关于git - 如何在 git 中保存未完全 merge 的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4627481/

相关文章:

git - 如何通过git将flutter插件添加到另一个flutter项目中?

Git - [includeIf] 多个 gitconfigs 不起作用

ubuntu - 使用 Ansible 和 apt,如何将 bash 更新为可远程利用的安全漏洞 CVE-2014-6271?

git - 如何更改 Gitlab 中 merge 的默认目标分支

visual-studio - Visual Studio 2008 修补程序

c# - Auto Patcher(高效的自动更新程序)

git - 运行 git init 两次是初始化存储库还是重新初始化现有存储库?

linux - Jenkins 通过 SSH 发布传输 0 个文件

svn - 为什么SVN合并没有任何更改的分支会导致未修改的文件修改SVN :mergeinfo property

java - 提高将大量排序映射合并为一个排序映射的性能 - java