如何变基已经合并的提交

How to rebase already merged commits

我需要追溯 rebase merged commitsmaster 到功能分支。

功能分支从master分支出来(功能分支是图中的蓝线),然后功能分支上有多个提交(蓝点),然后master被合并提交回来到功能分支(而不是 rebased - master 是图片中的红线)。

所以我需要 "go back" 2 merge commits 并在保持功能分支完好无损的同时对它们进行变基。

您可以使用 git rebase -i 并在第二次和后续提交中将 "pick" 替换为 "squash" 或 "fixup"。

详细说明在这里:

https://git-scm.com/docs/git-rebase#_interactive_mode

在你这样做之后你需要推送到远程仓库(我认为用力)。

您还可以在与主分支拆分之前将您的分支重置为提交,然后将所有更改提交到 1 个压缩提交中。 之后,只需对 master 进行 rebase。

所以,在你的分支上:

git reset --soft <commit SHA>
git add <All changes>
git commit -m "<commit message>"
git rebase master