2011-12-08 3 views
3

J'ai récemment commencé à utiliser Git lors de la création d'un nouveau projet - jusque-là, je ne faisais que des sauvegardes régulières des projets en compressant la source de chacun. J'ai maintenant plusieurs fichiers DD.MM.YYYY.zip pour chaque (ancien) projet - de la même manière que chaque projet n'a qu'une seule branche.migration d'un projet existant vers git

Maintenant, je veux me débarrasser de tous ces fichiers .zip et tout porter à Git. Voici ce que je pense à:

Create a new repository. 

    git init 

Copy the files from the oldest .zip file into the repository. 

    git add ... 
    git commit ... 

Delete the files copied from the oldest .zip file. 
Copy the files from the second oldest .zip file into the repository. 

    git add ... 
    git commit ... 

Delete the files copied from the second oldest .zip file. 
... 

Cela va-t-il fonctionner? Y a-t-il une meilleure solution pour réaliser ce que je veux?


supplémentaires:
Pour certains (anciens) projets j'ai commencé un dépôt Git avec la nouvelle source et la programmation continue. Pour ces projets, il existe encore des fichiers DD.MM.YYYY.zip - y a-t-il un moyen d'effectuer un commit au début d'un projet? (Peut-être une question stupide, mais ne hésitez pas à me suggérer autre chose.)

Répondre

3

Il ne fonctionnera que si vous le faites, pour chaque nouveau contenu de l'arbre de travail (avec chaque archive décompressé):

git add -A . 

Ie, si vous demandez à Git d'ajouter des fichiers nouveaux et modifiés et supprimez les fichiers qui n'existent plus.

Pour la pièce supplémentaire, vous pouvez créer un orphan branch, importer votre historique compressé, puis rebaser votre branche actuelle par-dessus.

+0

En ce qui concerne la partie supplémentaire: je crée une nouvelle branche (orpheline) appelée (par exemple) 'legacy', puis rebasme 'master' par-dessus. Ma branche de travail habituelle n'est-elle pas appelée «héritage»? –

1

Comme mentionné - vous pouvez très facilement transformer les archives zip en un dépôt git.

Pour fusionner un nouveau développement avec un autre référentiel connexe mais non identique, vous pouvez lier les deux en un seul. Peut-être rebasage est tout ce que vous avez besoin, mais quand je l'ai fait je les commandes suivantes et affiché un peu plus de discussion à blog article

git remote add jdc file:///opt/src/tile-qt-jdc 
git fetch jdc 
git ls-tree 1519481 
git read-tree -m 1519481 
git checkout-index -f -u -a 

read-tree est un moyen intéressant de définir l'index à un arbre donné. Il y a aussi des «greffes» mais cela ne m'a pas semblé utile.

Questions connexes