我的主人最后三次提交:
... -> C -> B -> A
我想在两个不同的分支中隔离B和A提交,所以我想要提交master的历史记录,以及两个新的分支,如下所示:
主:
... -> C
分支-B:
... -> C -> B
分支-A:
... -> C -> A
我找到了为master和commit B分支做的方法,但我不知道怎么做提交A分支:
git checkout master
git branch commit-A
git reset --hard HEAD^
git branch commit-B // commit-B HEAD to commit B
git reset --hard HEAD^^ // master HEAD to commit C
git checkout commit-A
??? // how to do like if commit B did not happen ? I don't like git revert because it adds a new commit.
git push --all
答案 0 :(得分:2)
最简单的方法是使用cherry-pick
git checkout master // A
git checkout(C的SHA1)//你处于'分离的HEAD'状态。
git checkout -b branch_b //从C(父)
创建并检出branch_bgit cherry-pick(B的SHA1)
git checkout(C的SHA1)//你处于'分离的HEAD'状态。
git checkout -b branch_a //从C(父)
创建并签出branch_agit cherry-pick(A的SHA1)
git checkout master // A
git reset --hard HEAD~2 //移动HEAD 2提交回来
就是这样:))