2011-03-03 69 views
0

說,我有一些庫的版本。 1.1下git。然後一個新的焦油球ver。 1.2出來。我如何更新我的分叉庫到一個新版本?用git修補分叉的回購

回答

4

你的問題並不好,但我會提供一個潛在的解決方案。

讓我們假設的代碼庫庫看起來是這樣的:

vendor a -- b 

b叉這是1.1釋放。

vendor a -- b 
       \ 
       \ 
you    1 -- 2 -- 3 

現在假設開發繼續在vendor樹上。

vendor a -- b -- c -- d 
       \ 
       \ 
you (master) 1 -- 2 -- 3 

d成爲他們1.2釋放。如果vendor樹位於git倉庫中,並且您可以訪問它,則git pullvendor樹中的git pull --rebase應該可以完成所需的大部分工作,您可能需要解決一些衝突等。但是,如果vendor樹不在git,並且您擁有源代碼的唯一訪問權限是每個發行版的tarball,那麼可能需要稍微複雜一些。然後

$ git checkout -b v1.2 b 

解壓你V1.2 tarbar到這個分支並提交更改:

所以我會在在你分叉,做點創建第二個分支。您現在應該有這樣的事情:

vendor a -- b -- c -- d 
      |\ 
      | \ 
you (master) | 1 -- 2 -- 3 
       \ 
(v1.2 branch) x 

現在,要麼你可以使用合併從分支V1.2的變化:

$ git checkout master 
$ git merge v1.2 

,也可以使用在1.2版的頂底墊更改:

$ git rebase v1.2 

,這將給你:

vendor a -- b -- c -- d 
       \ 
       \ 
you (master) x -- d -- 1 -- 2 -- 3 

我不是專家,所以我敢肯定,如果我犯了一些錯誤,人們會發表評論(請做,然後我會添加更正)。

+2

不需要單獨的'git checkout b'(這會給你很長的警告):只需使用'git checkout -b vendor-1.2 b'。 – 2011-03-03 16:00:28

+0

@Roman Cheplyaka:謝謝,根據更新。 – 2011-03-03 16:10:00

+0

謝謝,它確實有幫助。這裏最有用的東西是最初從提交「b」分支,以便首先應用供應商更改,然後將更改應用到新版本之上。附:對不起,「不是很好」的問題,只是想以最一般的方式表達自己。 – Dziamid 2011-03-06 01:07:03