如何将更改从功能分支合并到主分支

时间:2017-08-01 15:03:02

标签: git

在功能分支上完成了大量工作,在此期间,分支上有多个提交,但是也会将提交与主分支的更改合并。

现在功能分支的提交方式如下:

  • 工作6(在功能分支上完成)
  • 工作5(在功能分支上完成)
  • 工作D(在分支上完成)
  • 工作C(在分支上完成)
  • 合并将'main'分支到'feature'
  • 工作3(在功能分支上完成)
  • 工作B(在分支上完成)
  • 工作A(在分支上完成)
  • 合并将'main'分支到'feature'
  • 工作2(在功能分支上完成)
  • 工作1(在功能分支上完成)

现在在GitHub仓库上创建了拉取请求,但很难完成所有更改并批准它。

我想要的是压缩功能分支上的提交,这样我只需要提交一个很好的提交。

我该怎么做?

我已经阅读过关于压制变化和变基的文章,但我需要一些帮助。 我可以致电rebase -i [commitnumber],其中提交号为Work 1吗? 我在功能分支上使用了它,它工作得很好,但是当存在合并提交时却没有。

1 个答案:

答案 0 :(得分:3)

使用git merge --squash

这是最简单的方法。转到main分支,使用feature选项合并--squash分支。

git checkout main
git merge --squash feature

使用git rebase -i

这就是你的建议。 在重新定位之前确保您拥有功能分支的备份副本。 在您的功能分支上调用git branch

git checkout feature
git branch feature_backup

现在检查日志,查看已启动功能开发的提交的SHA哈希值。如果这是很久以前的事了,您可以使用此命令查看从feature分支分割的main分支的位置:

git merge-base main feature

然后使用git rebase

git rebase bc4b30e

继续like it is described here。您不应该提供您想要压缩的提交数量,而是要提供您要压缩的第一个提交的SHA哈希值。如果那是n提交之前,你可以使用HEAD~n