我有一个分支,它有很多不必要的提交,所以我想从它分支到一个具有干净历史记录的版本。
这是一个例子:
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?
git checkout master
git checkout -b branchc
git merge --no-ff branchb
然后合并提交将分支 B 从 B1-B6 的更改合并到主节点之上。
从当前master
创建新分支
git checkout -b BranchC
执行变基交互并删除您不需要的提交
git rebase -i commit3
在变基交互式编辑器中,它将如下所示
pick commit3
pick commitB1
pick commitB2
pick commitB3
pick commitB4
pick commitB5
pick commitB6
删除不需要的提交。编辑器可能看起来像这样。
pick commit3
pick commitB6
保存并退出。
希望commitB6
不依赖于commitB1
的变化..commitB5
.否则,您必须解决冲突。
你也可以这样做,一个樱桃挑选
git checkout master
git checkout -b branchc
git cherry-pick commitB6