2011-03-03 3 views
0

Dites, j'ai une fourchette de bibliothèque ver. 1.1 sous git. Puis un nouveau tar-ball ver. 1.2 sort. Comment puis-je mettre à jour ma bibliothèque fourchue vers une nouvelle version?Patch fourchu repo avec git

Répondre

4

Votre question n'est pas géniale, mais je vais vous proposer une solution potentielle.

permet d'assumer la base de code pour la bibliothèque ressemble à ceci:

vendor a -- b 

vous fourche à b qui est la libération 1.1.

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

Supposons maintenant que le développement se poursuive sur l'arborescence vendor.

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

et d devient leur libération 1.2. Si l'arbre vendor est dans un repo git et que vous pouvez y accéder, alors un git pull ou peut-être un git pull --rebase de l'arbre vendor devrait faire la plupart des choses dont vous avez besoin, vous devrez peut-être résoudre certains conflits, etc. Cependant, si l'arbre vendor n'est pas dans git, et le seul accès que vous avez le code source est tarballs de chaque version alors quelque chose de légèrement plus compliqué pourrait être nécessaire.

Je créerais une deuxième branche au point où vous fourchue, en faisant:

$ git checkout -b v1.2 b 

Ensuite, vous décompressez v1.2 tarbar dans cette branche et valider les modifications. Vous devriez maintenant avoir quelque chose comme ceci:

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

Maintenant, que ce soit vous pouvez fusionner les modifications de la branche v1.2 utilisant:

$ git checkout master 
$ git merge v1.2 

Ou vous pouvez rebasage vos changements au-dessus de v1.2 à l'aide :

$ git rebase v1.2 

qui vous donnera:

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

Je ne suis pas un expert, donc je suis sûr que les gens vont commenter si j'ai fait quelques erreurs (s'il vous plaît faire, alors je vais ajouter des corrections).

+2

Pas besoin d'un git checkout séparé (qui vous donne un si long avertissement): il suffit d'utiliser 'git checkout -b vendor-1.2 b'. –

+0

@Roman Cheplyaka: Merci, mis à jour selon. –

+0

Merci, ça m'a vraiment aidé. La chose la plus utile ici est de commencer par une branche "b", de manière à appliquer d'abord les modifications du fournisseur, puis à appliquer vos modifications au-dessus de la nouvelle version. P.S. Désolé pour la question "n'est pas génial", je voulais juste m'exprimer de la manière la plus générale. – Dziamid