2011-03-01 17 views
6

Tenemos varios repositorios git trabajando en proyectos de Android. Tenemos el repositorio de 'arranque' que es pequeño y 'android' que es enorme. Durante el desarrollo, uno de nuestros chicos empujó la rama de 'android' a 'boot' y ahora el tamaño del repositorio de arranque es de 700 MB. ¿Hay alguna forma de eliminar por completo la rama incorrecta y todas las confirmaciones relacionadas con ella desde 'inicio' ahora?¿Cómo borrar la rama con todas las confirmaciones enviadas al depósito incorrecto?

me trataron filtro de rama y otros métodos, pero la mayoría de ellas cambian los números de cometer hechos después de ese empuje mal

En teoría, esto no debería ser un problema eliminar confirmaciones que están 'en el lado'. Esta rama Nunca se fusionó a 'maestro' y éstos cometen no son padres de ninguna utilidad compromete

Respuesta

5

Eliminación de la rama que se hace por

git branch -D branch_name 

Nota capital -D opción: esto le dice a Git para borrar la rama incluso si no se fusionó por completo con el maestro

Después de hacer eso, encienda el recolector de basura con git gc. Entonces tú deberías estar bien.

+2

La rama en sí es solo un nombre para una confirmación. (40 bytes en el disco) y borrar la rama no puede resolver el problema. Los objetos creados por push incorrecto todavía se referencian en el repositorio por una gran cantidad de commits enviados al repositorio, por lo que GC tampoco ayuda – mishmashru

+2

, esto no es una respuesta a la pregunta original. Los datos de la confirmación original todavía existen. – kazanaki

11

Eliminación de una rama de un servidor remoto se realiza mediante git push

git push --delete boot branchname 

Después de esto cada persona puede ejecutar el siguiente comando en su repo local para eliminar la rama eliminada.

git remote prune boot 

Después de la rama se elimina, sin embargo, los datos aún se quedarán en cada repositorio durante 2-4 semanas por defecto como una medida para evitar la pérdida accidental de datos. Si la preocupación por el espacio en el disco es realmente importante para usted, puede eliminarlo antes, pero tenga en cuenta que esto eliminará todos los objetos inalcanzables que se mantienen temporalmente para evitar la pérdida accidental de datos.

git gc --aggressive --prune=now 
Cuestiones relacionadas