2012-10-04 82 views
2

其他人可以更好地說出這個問題,但這裏是我想要做的:Git將功能分支的歷史記錄更改爲新的分支?

我一直在努力工作長壽主要重構分支B.我一直在經常合併主人,現在分支B是主人提前200次提交。我準備好現在發送拉請求,但我想稍微清理我的提交歷史記錄。基本上,我想我所有的〜200個提交擠進僅有3提交:

  • 提交1 =是刪除了
  • 提交2中的所有文件=所有新添加的文件
  • 提交3 =其他的一切也就是所有的感動/編輯文件

而且,就這樣我不把它搞砸了,我想做這個歷史重寫在我自己的分支B的一個單獨的分支上,併發送該分支作爲我的請求。

我可以在git中實現這個最簡單的方法是什麼?

回答

2

讓我們假設你要合併到master

  1. 創建並檢出一個新的分支:

    git checkout -b going-to-squash 
    
  2. 再次基於在主

    git rebase --squash master 
    
  3. 復位到主分支

    git reset master 
    
  4. 現在,您的整個壓扁的分支將處於未提交狀態。

    立即創建您的新提交。

    我會在這一步使用gui,但它在命令行上是完美可行的。

0

一個git rebase --interactive(如described in the Pro Git book)將是不實際的,因爲它允許挑選或壁球承諾(未提交的部分)

另一種方式可能是generate a giant patch(如git format-patch origin/master),然後分析該文件化妝3個補丁文件:

  • 一個與所有的deletetions
  • 一個與所有添加
  • 其餘

然後,您可以從提交branch B創建分支(請參閱「Reference Git branch start commit」),並應用這三個修補程序。

相關問題