2012-08-31 29 views
0

當我工作的一大功能,帶我幾天來實現我做很多小的提交到我的本地git倉庫,也拉從別人的變化遠程主存儲庫。該功能完成後,我的本地git倉庫看起來莫名其妙地想:如何壁球是交錯與遠程多個本地Git修訂提交

  1. 本地提交:特徵X
  2. 遠程的最後一步承諾:乙
  3. 本地提交:特徵X的一部分
  4. 本地提交:要素X
  5. 遠程的部分承諾:一
  6. 本地提交:該功能X.
  7. ...
  8. 的第一步

現在,我想推送所有本地提交到遠程回購作爲單個提交添加功能X.壓縮提交'git rebase'在這種情況下不起作用,因爲遠程提交不是由我(2和5)也需要被壓扁,這不是一種選擇。

,我設法想出的唯一辦法是有一個乾淨的分支,只有遠程提交,發出「git的差異」對我的地方發展分支,所得到的補丁應用到乾淨的分支。然後提交補丁更改並推送。有沒有更好的辦法?

+1

聽起來像是你需要考慮你的git的工作流程。我通常建議在_feature分支_中進行開發,並且僅在絕對必要時合併或拉入_master_。一旦該功能準備好或者至少不會破壞任何東西,它可以合併爲主。這樣歷史保持清潔,不需要重新貼牌。 – opqdonut

+0

但是,你是否仍然需要將中間局部提交壓縮爲一個最終提交還是有辦法避免這種情況? –

+0

如果你真的想/需要壓扁,你可以做到。一個捷徑是使用'git merge --squash'。但是在IMO的正常發展過程中應該需要壓縮。 – opqdonut

回答

1

我找到了答案:git rebase -i實際上允許重新排序提交,並且當所有的本地提交被重新排序成順序排列(不與遠程提交交錯)時,它們都可以被壓縮成一個。