Git在两个分支上隔离了最后两个提交

时间:2016-09-03 09:02:21

标签: git

我的主人最后三次提交:

... -> 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

1 个答案:

答案 0 :(得分:2)

最简单的方法是使用cherry-pick

  

git checkout master // A

     

git checkout(C的SHA1)//你处于'分离的HEAD'状态。

     

git checkout -b branch_b //从C(父)

创建并检出branch_b      

git cherry-pick(B的SHA1)

     

git checkout(C的SHA1)//你处于'分离的HEAD'状态。

     

git checkout -b branch_a //从C(父)

创建并签出branch_a      

git cherry-pick(A的SHA1)

     

git checkout master // A

     

git reset --hard HEAD~2 //移动HEAD 2提交回来

就是这样:))