【发布时间】:2023-03-20 01:03:01
【问题描述】:
我想将我的分支重新定位到旧提交上,以排除新提交添加的代码。
我有什么:
A---B---C---D---E master
\
F---G---H---I---J experiment
我想要什么:
A---B---C---D---E master
\
F---G---H---I---J experiment
假设我想在提交 B 时创建我的 experiment 分支,但没有意识到我在 E 上创建了它。当我意识到时,我已经做了很多提交,其中包括我不想要的代码更改(C、D、E)。
如何将experiment 的起点移动到较旧的提交B?
我已阅读 this post,但没有看到任何关于将分支移动到旧提交的有用信息。
【问题讨论】:
-
这能回答你的问题吗? Change branch base
-
请注意,分支
experiment的“起点”是并且仍然是提交A。当你变基时你所做的(见eftshift0's answer)是copy提交F-G-H-I-J到新的和改进的不同的提交F'-G'-H'-I'-J',其中F'建立在B而不是E,G'基于F'而不是F,等等。 -
提交
A-B-C-D-E目前在两个分支上,完成后,A-B将在两个分支上,C-D-E仅在一个分支上,F'-...-J'完全在另一个。因此,分支没有(有用的)起点,它们只有终点。这就是为什么你必须使用git log B..experiment或git log master..experiment来限制git log显示的内容。
标签: git git-branch git-commit git-history