将合并组合到单个合并中

时间:2011-12-22 01:24:00

标签: git

假设我有一个主线分支和一个功能分支。我已经多次将主线分支合并到功能分支中,但是我只有一些非常小的合并冲突。我想清理历史记录,以便最后只有一个合并。这样做的最佳方法是什么?

3 个答案:

答案 0 :(得分:1)

你有没有看过git rebase

git co -b temp_feature feature
git rebase master

这应忽略合并,但您必须重新解决冲突。 它还创建了temp_feature分支以便于返回,但使用reflog可以实现同样的目的。

下面的错误答案:这将创建单个提交,而不是单个合并: - /)

我认为最简单的方法是:

git co master
git merge --squash feature

这将从整个功能分支创建单个提交。如果您不想保留功能分支,请执行以下操作:

git branch -D feature

答案 1 :(得分:1)

您可以执行交互式rebase来实现此目的,但只有在尚未与其他任何人共享该历史记录时才应该这样做。这在实践中意味着,如果您没有对共享仓库进行git push,则应该只执行此操作。

答案 2 :(得分:1)

听起来你想要将功能分支的非合并提交编写成clean-feature分支,然后最终将clean-feature分支与最新的master(无论是什么)合并。你可以使用rebase来加速那些樱桃挑选的一部分,遗憾的是我不知道这是一个很好的方法,因为这不是我经常做的事情。如果你有一个gui允许你一次选择多个提交,这将有所帮助。

编辑:这将是一个更具体的解决方案:How to cherry pick a range of commits and merge into another branch