我有以下Git提交树:
R - A - B - C - D (master)
I would like:
R - A - B - D' (master)
\ - C (new-branch)
我该怎么做呢(假设这是可能的)?
我开始使用 git cherry-pick
,但我没有成功将提交从主分支中删除。
谢谢。
我有以下Git提交树:
R - A - B - C - D (master)
I would like:
R - A - B - D' (master)
\ - C (new-branch)
我该怎么做呢(假设这是可能的)?
我开始使用 git cherry-pick
,但我没有成功将提交从主分支中删除。
谢谢。
git branch new-branch sha1-of-C
git rebase --onto sha1-of-C^ sha1-of-C master
master
提交合并到sha1-of-C
之前的提交来删除主分支中的C。git rebase -i sha1-of-C^
在交互式变基中,只需删除提交C,保存并退出即可。git add
和git rebase --continue
。无论您选择哪种方法,都必须解决这些冲突。git branch new-branch sha1-of-C
(此命令不关心HEAD是什么,即它不关心正在检出什么)。 - tcovo在主分支上:
git branch new-branch
git reset --hard B
git cherry-pick D
git checkout new-branch
git reset --hard C
如果还没有检出,请执行git checkout master
。
git branch tempD # create temporary branch, pointing to D
git branch new-branch HEAD^ # create new-branch, pointing to C
git reset --hard HEAD^^ # reset master to B
git cherry-pick tempD # apply D's changeset onto B
git branch -D tempD # remove temporary branch
cherry-pick
之后跟着一个rebase -i
来移除另一个提交,但我不建议完全删除它。 - Nic