Git合并到过去的提交中

JRe*_*eno 4 git version-control merge

我们有一个类似这样的git历史记录。这已经被推送到远程了,但是我可以在某些提交中合并分支吗?还是我仅限于仅合并提交? 毁了git历史

其中蓝色是原点/主节点,品红色是已物理复制到主分支中的要素分支。

Mar*_*Liu 5

假设提交历史如下,您想将feature分支合并到commit中B

...---A---B---C---D  master

...---E---F---G---H  feature
Run Code Online (Sandbox Code Playgroud)

然后,您可以执行以下命令:

git checkout commitB
git merge feature --allow-unrelated-histories
Run Code Online (Sandbox Code Playgroud)

假定合并提交ID提交M如下提交历史记录:

                  C---D  master
                 /
      ...---A---B---M 
                   /
...---E---F---G---H  feature
Run Code Online (Sandbox Code Playgroud)

然后,您可以执行以下命令:

git rebase --onto commitM commitB master
git push origin master -f
Run Code Online (Sandbox Code Playgroud)

现在的提交历史将是:

      ...---A---B---M---C'---D'  master 
                   /
...---E---F---G---H  feature
Run Code Online (Sandbox Code Playgroud)

  • 是的,请改用`git merge feature --allow-unrelated-histories`。 (2认同)
  • 要解决合并冲突,您可以先修改并保存所有冲突文件,然后使用git add。和git commit完成合并:) (2认同)