2011-03-03 66 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