我的本地存储库中有一个提交(A),我还不打算推送它。现在,HEAD 位于 A。假设我想在提交(A)之上创建另一个提交(B)NOT,但在前一个提交之上而不是提交(A)之上。
如何将本地 HEAD 分配给之前的提交而不丢失最新的提交(A)?
我不想要撤消/删除提交(A),我想保存它以供以后重新调整到我的分支中的最新提交。创建提交 B 后,我想将提交(A)放在提交(B)之上。所以它应该看起来像:-
之前:C -> A(HEAD)
之后:C -> B -> A(HEAD)
我该怎么做?
编辑:- 我有一个限制,只能在不使用另一个分支的情况下执行此操作。
您现在可以创建一个新的提交,然后
rebase -i
重新排序它们。
(create B)
git rebase -i head˜2
(in the resulting pick list, re-order A and B)
(Use `dd` and `P` to delete and paste lines)
!wq // Exit vim
git checkout -b temp
git reset --hard head˜1
(create B)
git cherry-pick A
git checkout - // Checkout whatever your previous branch was
git reset --hard temp
从您的分行,
# Save your branch with its commit A on a new branch
git branch backup_A
# Restore your branch one commit back
git reset --hard HEAD~
当您在 B 上工作时,您的提交 A 将在
backup_A
分支上等待您。
当您完成提交 B 并希望 A 位于顶部时,只需将其挑选回来即可:
git cherry-pick backup_A