所以,我们有 master 和分支 X,它与 master 是最新的,还有一些提交。
我已经改变了 master 的基础,改变了历史 - 压缩了一些提交,改写了其他的。
然后,我尝试用 master 重新设置分支 X 的基础 - 似乎改写词不会进入分支 X - 它们仍然是旧的提交消息 - 我如何更新分支 Xs 提交历史以匹配 master?
(顺便说一句,壁球和修复变基似乎很好,它似乎只是改写)。
所以,我们有 master 和分支 X,它与 master 是最新的,还有一些提交。
我已经改变了 master 的基础,改变了历史 - 压缩了一些提交,改写了其他的。
然后,我尝试用 master 重新设置分支 X 的基础 - 似乎改写词不会进入分支 X - 它们仍然是旧的提交消息 - 我如何更新分支 Xs 提交历史以匹配 master?
(顺便说一句,壁球和修复变基似乎很好,它似乎只是改写)。
如果你重新设置你的 master,branch-X 不再是最新的 master。我认为解决这个问题的最简单方法是使用 git cherry-pick。
git checkout -b branch-Y master
git cherry-pick <sha>
对于您需要从 branch-X 提交的每个提交git branch -f branch-X branch-Y; git checkout branch-X; git branch -D branch-Y
我还建议在广泛使用它之前阅读更多关于 rebase 的内容:Git rebase or merge