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