将 HEAD 分配给先前的提交而不丢失 HEAD

问题描述 投票:0回答:2

我的本地存储库中有一个提交(A),我还不打算推送它。现在,HEAD 位于 A。假设我想在提交(A)之上创建另一个提交(B)NOT,但在前一个提交之上而不是提交(A)之上。

如何将本地 HEAD 分配给之前的提交而不丢失最新的提交(A)?

想要撤消/删除提交(A),我想保存它以供以后重新调整到我的分支中的最新提交。创建提交 B 后,我想将提交(A)放在提交(B)之上。所以它应该看起来像:-

之前:C -> A(HEAD)

之后:C -> B -> A(HEAD)

我该怎么做?

编辑:- 我有一个限制,只能在不使用另一个分支的情况下执行此操作。

git
2个回答
4
投票

使用变基

您现在可以创建一个新的提交,然后

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

3
投票

从您的分行,

# 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
© www.soinside.com 2019 - 2024. All rights reserved.