2011-07-30 47 views
4

我想知道如果下面是可能的混帳:在git上合併主題分支,刪除所有主題分支的提交歷史記錄?

假設我有以下病史:

A---B---C---D---E master 
     \ 
      W---X---Y topic 

我想合併在主題分支的回到主機的所有更改,但不保留提交歷史記錄。也就是說,不是,:

A---B---C---D---E---F master 
     \  /
      W---X---Y topic 

我想有以下病史:

A---B---C---D---E---F master 

F是在主分支等同於承諾W所作的更改新的提交, X,Y,一次全部應用。

我也想能夠保持特性分支完好:

A---B---C---D---E---F master 
     \   
      W---X---Y topic 

這可能嗎?我一直在用git rebase進行一些測試,但到目前爲止它還沒有按照我的需要行事。

在此先感謝。

回答

7

應該比壞飛艇建議簡單,但我還沒有嘗試過這樣的:

$ git checkout master 
$ git merge --squash topic 
$ git commit *what has changed* 

然而,當我明白git help merge正確的,它應該做的伎倆。

+0

謝謝!這一個爲我做了詭計。感謝糟糕的齊柏林飛艇和反間諜軟件。 –

+0

今天我讀到這個:http://sandofsky.com/blog/git-workflow.html可能是一個值得伴隨閱讀。 – Boldewyn

1

創建主題分支的副本,交互重新分配給主分支(git rebase -i E),將主題分支中的提交壓縮爲一個,最後刪除您創建的主題分支的副本。在這些之後,你必須能夠得到你想要的東西。

0

創建題外話一個新的分支(這是暴殄天物)

git的重訂主--interactive

(壁球提交到一個)

然後在主,cherrypick一個提交上一次性分支。

您將完全掌握主人的歷史,主題分支將完好無損。

可能有更簡單的方法來做同樣的事情...

相關問題