我有一个分支,它有许多不必要的提交,所以我想从它分支到一个干净的历史版本。
这是一个例子:
Master:
commit1
commit2
commit3
BranchB:
commitB1
commitB2
commitB3
commitB4
commitB5
commitB6
After merge:
commit1
commit2
commit3
commitB1
commitB2
commitB3
commitB4
commitB5
commitB6
而不是我希望有这样的东西:
commit1
commit2
commit3
commitB6
是否可以克隆分支B中的所有代码(提交B6后的状态)并使用新的提交消息将其复制到新的分支C?
答案 0 :(得分:0)
git checkout master
git checkout -b branchc
git merge --no-ff branchb
然后合并提交将来自b1-b6的branchb的更改包含在master的顶部。
答案 1 :(得分:0)
从当前master
git checkout -b BranchC
执行rebase交互并删除您不想要的提交
git rebase -i commit3
在rebase交互式编辑器中,它将如下所示
pick commit3
pick commitB1
pick commitB2
pick commitB3
pick commitB4
pick commitB5
pick commitB6
删除您不想要的提交。编辑器可能看起来像这样。
pick commit3
pick commitB6
保存并退出。
希望commitB6
不依赖于commitB1
.. commitB5
的更改。否则你必须解决冲突。
答案 2 :(得分:-1)
你也可以这样做,一个挑选
git checkout master
git checkout -b branchc
git cherry-pick commitB6