2010-01-14 4 views
5

Je travaille sur un référentiel dans lequel l'auteur a pris le chemin sale et bourré toutes ses dépendances dans le répertoire lib/dans le commit initial. Normalement, si ce n'était pas le commit initial, je ferais juste un rebase interactif et supprimerais le commit entier (si c'est tout ce qu'il a fait). Cependant, je n'ai aucune idée de comment j'éditerais/supprimerais le commit initial. Est-ce que je peux modifier le commit initial et supprimer le répertoire lib sans toucher le reste?Comment modifier la validation initiale dans un référentiel github?

EDIT

je tombé par hasard sur la réponse ici: Can I remove the initial commit from a Git repo? dans la réponse choisie. C'est ce que je reçois pour ne pas chercher plus à fond.

Répondre

4
$ git filter-branch --parent-filter \ 
    'test $GIT_COMMIT = SECOND && echo "" || cat' \ 
    --tag-name-filter cat -- --all 

SECOND est le SHA-1 de vous engager voulez être la nouvelle racine. Ce qui précède suppose que toutes les branches utilisent les mêmes premier et second commits. Sinon, vous devrez généraliser le test dans le filtre parent. Notez qu'il s'agit d'une mesure drastique: elle réécrira tout votre historique et vous empêchera de suivre le repo de l'auteur. Aussi, si vous avez poussé votre repo sur les télécommandes, vous aurez besoin de clabber ceux avec git push -f.

+0

AVERTISSEMENT: Ref 'refs/heads/maître ne change pas AVERTISSEMENT:' refs/remotes/origine/Master Ref est inchangé ATTENTION: 'refs/remotes/origine/Master Ref est inchangé est ce qu'il a moi. – Rayne

+0

Ack! Vous voulez réécrire les parents du commit * second *, pas le premier. Voir la mise à jour, et désolé pour le faux départ. –

+0

J'ai trouvé une façon différente de le faire (montré dans mon édition) avant de modifier ce post. Je vais partir avec l'hypothèse que cela fonctionne réellement (je vous fais totalement confiance <3) et marquer votre réponse comme acceptée de toute façon. – Rayne

Questions connexes