Git合并到过去的提交中

时间:2018-03-16 05:31:44

标签: git merge version-control

我们有一个看起来像这样的git历史记录。这已被推送到远程,但我可以在某些提交中合并分支吗?或者我仅限于在顶部合并提交? Ruined git history

其中blue是origin / master,magenta是一个已经物理复制到master分支的feature分支。

3 个答案:

答案 0 :(得分:3)

如果可能,最好在两个分支HEAD之间进行合并,因为它会向主分支添加一个新的提交(合并提交),从而允许轻松(快进)推送。

其他任何内容都可能会改变历史记录,让您执行git push --force(如果您有其他协作者使用回购协议,则可能会出现问题)

答案 1 :(得分:3)

假设提交历史记录如下,并且您希望将feature分支合并到提交B中:

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

...---E---F---G---H  feature

然后你可以执行以下命令:

git checkout commitB
git merge feature --allow-unrelated-histories

假设合并提交ID提交M,如下面的提交历史记录:

                  C---D  master
                 /
      ...---A---B---M 
                   /
...---E---F---G---H  feature

然后你可以执行命令:

git rebase --onto commitM commitB master
git push origin master -f

现在提交历史记录将是:

      ...---A---B---M---C'---D'  master 
                   /
...---E---F---G---H  feature

答案 2 :(得分:2)

然后进入主分支 git merge“commit-id” 这应该这样做