Parece que mi compromiso inicial está ocupando el 90% del espacio, ya que se hizo accidentalmente con un montón de archivos multimedia en él. ¿Hay alguna manera de eliminar solo el primer compromiso de repos locales y remotos, o debería dejar este?¿Puedo eliminar la confirmación inicial de un repositorio de Git?
Respuesta
Parece que ya ha compartido el repositorio con otros usuarios. Si este es el caso, entonces probablemente solo deberías vivir con eso.
Si tiene el control de todos los clones, puede volver a escribir el historial sobre una confirmación raíz modificada con los archivos no deseados eliminados. Tenga en cuenta que no debe hacer esto si otros desarrolladores ya han funcionado desde esta rama.
Si le interesa la reescritura del historial, puede intentar lo siguiente. Tenga en cuenta que debido a que git mantiene registros de donde ha estado recientemente su commit de HEAD (reflogs), los objetos grandes no desaparecerán inmediatamente de su repositorio u otros repositorios que ya los tengan, aunque intente con git gc
o git gc --prune
. Sin embargo, garantizará que los clones nuevos no terminen recuperando los objetos grandes como parte del historial de la rama maestra.
Suponiendo que el directorio de trabajo es 'limpia':
# 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>
alternativa, se puede utilizar para eliminar git filter-branch ofender archivos (véase la sección Ejemplos), pero también está reescribiendo la historia. Por lo tanto, cualquiera que haya basado su código en la parte superior de su historia anterior tendría mala sorpresa ...
filter-branch también se adaptará mejor (o al menos requerirá menos interacción) si los cambios en los archivos no deseados se han rastreado desde la confirmación de la raíz. –
- 1. ¿Cómo edito la confirmación inicial en un repositorio github?
- 2. ¿Cómo hacer referencia a la confirmación inicial?
- 3. ¿Cómo eliminar la confirmación de git-notes?
- 4. API de GitHub v3: ¿cómo creo la confirmación inicial en un repositorio?
- 5. ¿Cómo puedo eliminar mi última confirmación en mi repositorio local de git
- 6. Eliminar archivo de la confirmación modificada
- 7. Obtener la última confirmación del repositorio de Git
- 8. ¿Cómo puedo comprometer la última confirmación en un repositorio de git bare?
- 9. ¿Cómo eliminar objetos no utilizados de un repositorio de git?
- 10. git - eliminar archivo del repositorio
- 11. ¿Cómo restablecer un repositorio de GIT remoto para eliminar todas las confirmaciones?
- 12. Git: cómo eliminar el archivo de la confirmación histórica?
- 13. División de la primera confirmación en git
- 14. ¿Cómo puedo verificar si un repositorio de git tiene alguna confirmación?
- 15. ¿Cómo eliminar un repositorio local de Git de TortoiseGit?
- 16. Eliminar una confirmación de github
- 17. Cómo eliminar una confirmación que se ha enviado al repositorio remoto usando Git
- 18. Cómo eliminar un blob de git repo
- 19. ¿Cómo puedo eliminar por completo un archivo de un repositorio de git?
- 20. Buscar la última confirmación en el repositorio Git que contiene un determinado patrón de cadena
- 21. ¿Cómo eliminar una confirmación de huérfano en git?
- 22. Cómo eliminar el origen del repositorio git
- 23. Git deshacer última confirmación
- 24. ¿Cómo revertir un puntero del submódulo de Git a la confirmación almacenada en el repositorio contenedor?
- 25. Git eliminar commit raíz
- 26. ¿Eliminar un conjunto de cambios específico del repositorio de Git por completo?
- 27. ¿Cómo puedo eliminar todos los archivos en mi repositorio de git y actualizar/enviar desde mi repositorio de git local?
- 28. ¿Cómo puedo hacer una confirmación de Git en el pasado?
- 29. ¿Puedo copiar un repositorio git a Windows?
- 30. ¿Cómo pasar por un repositorio de git?
También hay 'git rebase--root'. Consulte la siguiente respuesta de SO para obtener más detalles: http://stackoverflow.com/questions/2246208/change-first-commit-of-project-with-git – MKroehnert