2014-12-08 101 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的變化。否則,你必須解決衝突。

相關問題