2010-10-16 3 views
4

Mon référentiel ressemble à ceci.Comment importer une nouvelle version d'un projet dans mon dépôt git?

v1 - A - B - C ... 

où le commettras v1 représente le contenu de upstream-project-foo-0.9.8.tar.gz et les commits A, B ... sont mes modifications.

Le but est de mettre à jour ma copie de upstream-project et d'y porter les commits A, B, C ....

Comment obtenir une nouvelle version de l'archive tar upstream-project dans mon dépôt git en tant qu'autre branche? Ou devrais-je envisager de faire un deuxième dépôt git?

Répondre

3

créer une nouvelle branche à partir de v1 et extraire la nouvelle version.

git checkout -b upstream <v1> 
tar -xzvf newversion.tar.gz 
git add -A 
git commit 

Vous pouvez ensuite fusionner les modifications entre les versions dans votre branche principale où se trouvent vos mises à jour.

git checkout master 
git merge upstream 

Vous pouvez également créer une branche de la C (ou quel que soit votre dernière version est) pour fusionner les mises à jour, puis fusionner la troisième branche dans le ton maître quand vous avez terminé.

+1

Vous devez probablement 'git rm -r .' avant d'extraire l'archive tar (de sorte que les noms de chemin existant dans * v1 * commit mais qui ne sont pas présents dans la nouvelle archive (fichiers supprimés/renommés) ne persistent pas dans le * en amont * branche). –

+1

@Chris ma compréhension est que ajouter -A couvre que par ce poste: http://stackoverflow.com/questions/572549/difference-of-git-add-a-and-git-add –

+1

Image deux tarballs: 'oldversion .tar.gz' a les fichiers 'a', et' b'; 'newversion.tar.gz' a les fichiers' a', et 'c' (non' b'). Si vous venez de déballer "new" sur "old", vous aurez à la fois 'b' et' c'. Vous devez nettoyer tout ce qui est "ancien", mais pas "neuf". Le plus simple est de supprimer tout ce qui était dans "old", puis de décompresser (et d'ajouter, via '-A') tout ce qui vient avec" new ". 'git add -A' enlèvera de l'index les noms de chemins qui n'existent pas dans l'arbre de travail, mais il ne peut pas identifier les noms de chemins qui étaient dans" old "mais pas dans" new "si vous déballez le dernier par dessus. –

Questions connexes