2010-01-01 4 views
4

J'ai récemment converti une prise en pension de subversion, qui avait été converti à partir cvs avant et je l'ai fini avec la structure suivante (simplifiée pour plus de clarté) au bas de l'arbre:Comment faire pour supprimer la validation supplémentaire de racine indésirable dans le dépôt git?

* master 
| 
... 
| 
| 
* G 
|\ 
| * F 
| * E 
| * D 
| * C Initial commit. 
| 
| 
* A New repository initialized by cvs2svn. 

La ligne de GA Commits indésirables que j'ai supprimés avec succès avec "git filter-branch". Je voudrais être en mesure de supprimer entièrement cette ligne, y compris le initial de validation racine vide à A et juste une seule ligne retournant à C.

Donc, je voudrais supprimer A en tant que parent de G et permettez-lui d'être gc'd, mais je ne suis pas sûr si c'est possible.

Répondre

4

Utilisation git filter-branch avec un --parent-filter sur G:

$ git filter-branch --parent-filter \ 
    'test $GIT_COMMIT = G && echo "-p F" || cat' HEAD 

où vous remplacez G et F avec les valeurs réelles SHA-1.

+1

Merci. C'était parfait. La seule différence était que j'ai fini par utiliser "- --all" au lieu de "HEAD", car il y avait en fait plusieurs branches qui avaient G comme ancêtre. –

+0

De rien. Je suis content que ça a aidé! –

Questions connexes