首页 > 解决方案 > 如何在没有提交的情况下合并到分支?

问题描述

假设我有branch1并且我创造了一个新branch2的。我承诺两次branch2branch1在没有任何存在证据的情况下,我如何将 branch2 恢复到原来的状态branch2

图表:

初始状态:

                  E---F  branch2
             /
A---B---C---D  branch1

通缉状态:

A---B---C---D---E---F  branch1

但相反,我得到了这样的东西:

A---B---C---D---E---F---(M)  branch1 with extra Merge Commit

注意:我正在使用 Intellij IDEA 来执行我的 git 命令。

标签: git

解决方案


在 git 分支中只是提交的指针

在您的情况下,您只需要执行以下操作:

git checkout branch1
git merge branch2

如果您没有向 branch1 提交任何新内容,它将在没有任何合并提交(git 优化)的情况下合并。

在正常情况下,git 应该总是创建一个合并提交。但是在这种特殊情况下,父分支自创建子分支以来没有进行任何提交,它只是更新引用。

              E---F  branch2
             /
A---B---C---D  branch1

合并后:

              E---F  branch1/branch2
             /
A---B---C---D  

如果您想在这里进行合并提交,请使用 --no-ff 选项合并。

git checkout branch1
git merge --no-ff branch2

如果您在创建新分支后有新的提交,合并提交创建是不可避免的。说例子:

               E---F  branch2
             /
A---B---C---D ----G  branch1

所以现在合并提交只是这里的救星:

              E--------F  branch2
             /         \
A---B---C---D ----G-----H(merge commit)  
                          branch1 

在上述情况下,形成了一个新的合并提交,并使用其引用更新了 branch1。


推荐阅读