我有这样的历史:
A---B---C---!BC
/ \
D---E---F---G--------H master
\
B'---C' new-branch
提交 B
和 C
最初是在顶部的功能分支中创建的,然后在提交 !BC
中恢复,然后是整个分支已 merge 到master。提交 B'
和 C'
已被精心挑选到新分支。
我现在想将 B'
和 C'
重新设置为 master,结果如下所示:
A---B---C---!BC
/ \
D---E---F---G--------H master
\
B'---C' new-branch
但是,运行 git rebase master
会产生以下结果:
A---B---C---!BC
/ \
D---E---F---G--------H master
new-branch
这在技术上是正确的,正如 git-rebase 文档所述 this :
a patch already accepted upstream with a different commit message or timestamp will be skipped
但是,从人的角度来看,这是不对的 - 我的工作目录缺少 B
和 C
的更改。
如何运行 git rebase
才能生成“预期”历史记录?
最佳答案
--force-rebase
标志做到了:
git rebase --force-rebase master
关于已恢复的精选提交的 Git rebase 可以将其设置为 "lose",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57991631/