Il semble que mon commit initial consomme 90% de l'espace, car il a accidentellement été créé avec beaucoup de fichiers multimédia. Existe-t-il un moyen de supprimer uniquement le premier commit des dépôts locaux et distants, ou devrais-je laisser celui-ci être?Puis-je supprimer la validation initiale d'un dépôt Git?
Répondre
Il semble que vous ayez déjà partagé le référentiel avec un certain nombre d'autres utilisateurs. Si c'est le cas, alors vous devriez probablement vivre avec.
Si vous contrôlez tous les clones, vous pouvez réécrire l'historique au-dessus d'un commit racine modifié avec les fichiers non voulus supprimés. Notez que vous ne devriez pas faire cela si d'autres développeurs ont déjà travaillé à partir de cette branche.
Si vous êtes en train de réécrire l'historique, vous pouvez essayer ce qui suit. Notez que parce que git conserve les logs de l'endroit où votre commit HEAD a été récemment (reflogs), les objets volumineux ne disparaîtront pas immédiatement de votre dépôt, ou d'autres dépôts qui en ont déjà, même si vous essayez git gc
ou git gc --prune
. Il veillera toutefois à ce que les nouveaux clones ne finissent pas par récupérer les objets volumineux dans le cadre de l'historique de la branche principale.
En supposant que votre répertoire de travail est « propre »:
# Go back the initial commit
git checkout <SHA1_of_old_root>
# Clean up the index to remove unwanted files, e.g. using git rm <files>
# ...
# Amend the initial commit with the new tree. Note the sha1 of the new commit
git commit --amend
# Go back to the master branch
git checkout master
# Re-apply all the commits onto the new root
git rebase --onto <SHA1_of_new_root> <SHA1_of_old_root>
vous pouvez également utiliser git filter-branch pour supprimer les fichiers Contrevenants (voir la section Exemples), mais il est en train de réécrire l'histoire aussi. Donc, toute personne qui a basé son code sur votre ancien historique aurait une mauvaise surprise ...
filter-branch se débrouillera aussi mieux (ou du moins nécessitera moins d'interaction) si les modifications apportées aux fichiers indésirables ont été suivies depuis la validation de la racine. –
- 1. Comment référencer la validation initiale?
- 2. fractionnement d'un dépôt git
- 3. Lire un dépôt Git, sans Git
- 4. Nombre de validations dans un dépôt git
- 5. Réduire l'historique d'un dépôt git
- 6. Où placer le dépôt Git
- 7. fatale: Pas un dépôt Git
- 8. Validation initiale du contrôle ajouté dynamiquement
- 9. Git: Comment obtenir un instantané d'un dépôt git
- 10. Git reset --hard et un dépôt distant
- 11. Comment supprimer git subtree merge
- 12. Comment supprimer un référentiel local dans git?
- 13. svn: supprimer un fichier dans le dépôt
- 14. Comment supprimer complètement la table initiale dans Android
- 15. Pourquoi git continue de supprimer mon dossier?
- 16. Git, modifier la validation racine pour toutes les branches
- 17. Extraction d'un dépôt SVN en utilisant Git - Fatal: impossible d'exécuter l'erreur 'git-svn'
- 18. Comment supprimer une révision d'un dépôt bazaar?
- 19. jquery validation supprimer submitHandler
- 20. Comment fusionner un dépôt git existant dans un dépôt vide et préserver l'historique?
- 21. Comment obtenir SHA de la dernière validation du référentiel git distant?
- 22. Fusion de modifications à l'extérieur d'un dépôt git
- 23. Comment migrer un dépôt svk vers git, avec l'historique?
- 24. Faire un clone de Teamcity cloner un dépôt git
- 25. Puis-je vérifier les wikis github comme un dépôt git?
- 26. Installation d'un rail plugin à partir d'un dépôt Git
- 27. créer un git symbolique ref dans un dépôt distant
- 28. Sous-répertoire Detatch dans un dépôt git séparé - Sur github
- 29. Comment réécrire les noms des commits dans un dépôt git?
- 30. Puis-je faire git-svn importer un dépôt Subversion qui lui-même contient des dépôts git
Il y a aussi 'git rebase --root'. Voir la réponse SO ci-dessous pour plus de détails: http://stackoverflow.com/questions/2246208/change-first-commit-of-project-with-git – MKroehnert