如果我过去有一个提交指向一个父级,但我想更改它指向的父级,我将如何去做?
使用git rebase. 这是 Git 中通用的“接受提交并将它/它们放在不同的父(基)上”命令。
git rebase
但是,有些事情要知道:
由于提交 SHA 涉及其父级,因此当您更改给定提交的父级时,其 SHA 将更改 -在开发线中紧随其后(比它更新)的 所有提交的 SHA 也将更改。
如果您正在与其他人一起工作,并且您已经将有问题的提交公开推送到他们拉取它的地方,那么修改提交可能是一个坏主意——。这是由于#1,因此其他用户的存储库在试图弄清楚由于您的 SHA 不再与他们的“相同”提交匹配而发生的情况时会遇到混乱。 (有关详细信息,请参阅链接的手册页的“从上游 REBASE 恢复”部分。)
也就是说,如果您当前在一个分支上,并且您希望将一些提交移至新的父级,它看起来像这样:
git rebase --onto <new-parent> <old-parent>
这会将当前分支中的 所有 内容移到其上。<old-parent>``<new-parent>
<old-parent>``<new-parent>