2014-12-08 69 views
0

我有一个分支,它有许多不必要的提交,所以我想从它分支到一个清除历史的版本。从清洁提交历史分支中创建一个新的分支

这是例子:

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

可能的重复[如何使用git-merge --squash?](http://stackoverflow.com/questions/5308816/how-to-use-git-merge-squash) – 2014-12-08 01:34:52

回答

0
git checkout master 
git checkout -b branchc 
git merge --no-ff branchb 

然后合并提交合并从主b1-b6的分支b的变化。

+0

谢谢!关于更多的问题。如何有不同于b6的提交信息?我希望有一个提交消息,其中包括从b1到b6的短消息版本。 – Cristiano 2014-12-08 01:14:04

+0

@克里斯蒂亚诺其实我是对的,即使我错了,合并提交不是b6,但一个新的提交,修改答案 – DRC 2014-12-08 01:30:35

+0

谢谢,但它似乎不工作。我仍然看到旧的日志消息。 – Cristiano 2014-12-08 02:17:07

-1

你也可以做到这一点,樱桃采摘

git checkout master 
git checkout -b branchc 
git cherry-pick commitB6 
0

从当前master

git checkout -b BranchC 

创建一个新的分支做衍合互动和删除提交您不希望

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的变化。否则,你必须解决冲突。

相关问题