2013-01-04 135 views
3

一直在尋找解決方案,因爲我離git的專家很遠 - 即使我接近解決方案,我也無法稍微修改它以完成它。更改分支的父項

我一直在努力工作,就像這裏建議的那樣:http://nvie.com/posts/a-successful-git-branching-model/,但由於匆匆忙忙,什麼不在分支爲修補程序 - 我從開發而不是主分支。

簡體,可以說我們有以下病史:

A---B---C--------D---- < developer 
\ /\ /
R1--R2 H1---H2 
     \   \ 
--------X---------Y--- < master 

R1和R2 RELASE分支提交,並罰款。然而,H1和H2是修補程序分支提交,並且H1應該從X(主)而不是C(dev)分支。既然X和C提交後面都有相同的代碼,是否有可能從X代替H1分支?

我想有它看起來像這樣:

A---B---C--------D---- < developer 
\ / /
R1--R2 H1---H2 
     \/ \ 
--------X---------Y--- < master 

這不會改變代碼的所有,我只是想保持一致,並有開始,他們應該分支機構。事情是 - 在開發和主分支上稍後再提交更多的提交。 H1-H2分支基本上已經過了一個月的時間,之後有超過一百次的提交。

正如我所指出的,我是一個混帳初學者,一直在玩rebase和什麼不是,但結束了可怕的錯誤。

對此有何治療?

回答

2

如果不重寫H1,則不能這樣做,然後重寫H2,這也意味着重寫D和Y.因此,所有提交都需要更改並重新發布。重新發布已發佈的提交通常是一個糟糕的主意。所以,如果這不是一個太大的問題,你不應該這樣做,只是保持原樣。基於十

  • 櫻桃採摘H1

    • 創建一個新的(臨時)分公司;:

      如果您仍然想這樣做,可以按如下方式做到這一點由此產生的H1'現在基於X.

    • 櫻桃採摘H2。
    • 將主設備重置爲X(git reset --hard X)。
    • 將臨時分支合併到主設備中。
    • 刪除臨時分支。
    • 將開發人員重置爲C.
    • 將主人合併到開發人員中。
    • 使用強制選項發佈兩個分支。
  • +0

    哦,好吧,我想我會堅持我所得到的。謝謝。 – Jeti