如果我的分支有很多提交,我该如何正确变基?

How do I rebase correctly If my branch has a lot of commits?

除了我的功能分支有更多提交之外,我的情况看起来与此类似

同时提交的错误修复也影响了我的功能分支。这就是为什么我想将我的功能分支变基到 master。

我尝试用 git rebase master(在我的功能分支上)来做到这一点,但最终陷入混乱。由于我的功能分支有大量的提交,rebase 需要永远,并且我在 rebase 过程中不断丢失概述及其所有冲突,以及较旧的提交等等。

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

'Keep losing overview' 听起来像是与 Git 一起使用的 UI 的问题。许多人喜欢终端,它确实非常强大,但 git 不是一个直观的方案,终端使它变得更糟。

我使用 TortoiseGit 进行了较大的变基,但存在多个合并冲突,这些冲突只会引起看似适当的挫败感。

学习一个新的git工具当然是解决这个问题的一个累赘。然后我再次推荐一个合适的用户界面作为基于文本的控制台的替代方案。这不像终端消失了!

第二个选择 是将 master 合并到 feature,如果你想要一个漂亮的线性 [=25],这可能不是一个好的选择=] 历史.

如果你想 rebase 你的整个历史,你将需要以某种方式在 master 之上重新播放每个单独的提交,并且还需要做一些额外的工作来保持 sub-feature -> feature合并。

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

  • 将 master(及其错误修复)合并到功能中:

    git checkout feature
    git merge master
    

    这将是最直接和 git 的方式

  • cherry-pick bugfix 提交到功能上:

    git checkout feature
    git cherry-pick bugFix
    

    这不是最简洁的方法,但确实有效
    稍后,您可能必须记住,在将 feature 合并到 master 时,bugFix 出现在两个分支上,如果您在 bugfix[= 修改的文件上发生冲突23=]

  • 首先简化 featuresub-feature 的历史,然后将简化版本 rebase 到 master