2011-09-18 2 views
9

à savoir, j'ai:Git: comment supprimer l'historique avant une validation spécifique

root -- c1 -- c2 -- .. - c1000 -- c1001 -- c1002 -- .. -- c2000 -- top 

et je veux avoir:

root = c1000 -- c1001 -- c1002 -- .. -- c2000 -- top 

Comment?

(je suppose que je peux le faire via git filter-branch, mais comment exactement?)

(Bien sûr, je sais que cela signifie histoire de réécriture ...)

Répondre

4

plus simple est avec une greffe git. Si vous modifiez le fichier .git/info/greffes, vous pouvez mettre des lignes dans le fichier du format

[ref] [parent1] [parent2] ...

Tout référencé sur commits le côté gauche sont ensuite traités comme si les parents énumérés à droite sont les parents de ce commit. Ainsi, vous pouvez insérer une ligne comme

c1000

et il sera traité comme si elle n'a pas de parents. Cela peut ensuite être "cuit dans la pierre" en exécutant git-filter-branch.

9

J'ai trouvé le dessous utile pour créer de nouvelles prises en pension avec une autre racine (qui est ce que je pense que vous demandez quand vous dites enlever l'histoire avant un commit):

git fast-export master~5..master | (cd ../newrepo.git && git init . && git fast-import && git checkout) 

(vous pouvez le faire ci-dessus dans le même repo aussi)

+0

Bon conseil! Très pratique pour créer un projet propre à partir de la branche d'un autre projet, mais sans les tracas de git filter-branch. – Claudio

+0

Ce message est assez vieux mais j'espère que j'obtiendrai une réponse. Existe-t-il un moyen de conserver les identifiants de validation lors de l'importation? –

Questions connexes