2017-05-15 2 views
0

Je suis en train de nettoyer un projet privé pour que je puisse publier - la suppression des fichiers divers de l'histoire, etc.Comment puis-je exécuter git filter-branch sur la validation racine?

J'essaie de supprimer un Makefile avec git filter-branch. Voici la ligne de commande J'utilise:

$ git filter-branch -f --index-filter 'git update-index --remove Makefile' 08a7d1..HEAD 

Cependant, quand je lance git log -- Makefile, il montre le Makefile ajouté à la racine commit, puis dans le RETIRE commettras immédiatement après la racine commit.

Comment puis-je obtenir git filter-branch pour s'exécuter sur la validation racine?

Répondre

0

Le problème est que la validation de démarrage dans la plage de validation spécifiée (08a7d1..HEAD) n'est pas incluse. Donc, en gros, il dit "tout ce qui s'est passé après08a7d1, tout le chemin jusqu'à HEAD." Passer la plage de validation à git filter-branch est facultatif. Si vous l'omettez, il sera exécuté sur tous les commits, tout le chemin jusqu'à et y compris la racine. Donc:

$ git filter-branch -f --index-filter 'git update-index --remove Makefile' 

Cela devrait faire l'affaire.