如何正确更改如果我的分支有很多提交?

时间:2017-10-06 08:24:45

标签: git version-control rebase

我的情况与此类似,只是我的功能分支有更多提交

enter image description here

在此期间提交的错误修复也会影响我的功能分支。这就是为什么我想将我的功能分支重新绑定到主服务器。

我试图用git rebase master(在我的功能分支上)这样做,最终陷入混乱。由于我的功能分支具有很高的提交次数,因此rebase需要永久性,并且在rebase过程及其所有冲突期间,我会不断丢失概述,包括旧的提交以及所有的提交。

在这种情况下我该如何正确地做到这一点?我做错了什么?

2 个答案:

答案 0 :(得分:0)

'不断丢失概述'听起来像你正在使用Git的UI的问题。许多人喜欢终端,但确实非常强大,但是git不是一个直观的方案,终端会让它变得更糟。

我使用TortoiseGit使用{{3}}进行了更大的变更,这些冲突只会导致看似适当的挫折感。

学习一个新的git工具当然是解决这个问题的麻烦。然后,我会建议一个合适的用户界面作为基于文本的控制台的替代。它并不像终端消失!

第二个选项是将master合并到feature,如果你想要一个不错的线性git历史,这可能不是一个好的选择。

答案 1 :(得分:0)

如果你想 rebase 你的整个历史记录,你将需要在master上重新播放每个单独的提交,并做一些额外的工作来保持sub-feature -> feature合并

我建议不要这样做。要将bugfix集成到feature分支中,您可以:

  • 将master(及其bugfix)合并到功能中:

    git checkout feature
    git merge master
    

    这将是最直接的,git - 是这样做的方式

  • 樱桃选择bugfix提交到功能:

    git checkout feature
    git cherry-pick bugFix
    

    这不是最干净的方式,但它确实有效 稍后,您可能必须记住,当bugFix合并到feature时,如果您在master修改的文件上发生冲突,则bugfix出现在两个分支上p>

  • 首先简化featuresub-feature的历史记录,然后在主版本上重新简化版本