2011-09-17 19 views
9

Si presiono una confirmación inicial incorrecta (o más de una) en un repositorio remoto y quiero borrarlo/destruirlo, ¿puedo hacerlo con un comando?Depósito remoto claro de Git

Es importante eliminarlo por completo del servidor para que no utilice espacio en el disco.

E.G. Hoy impulsé todo un proyecto de Visual Studio con dlls, sdfs incluidos, etc. En primer lugar, estos archivos son bastante grandes, en segundo lugar, algunos de ellos son modificados por VS de otros desarrolladores y no pueden fusionarse. Esto me hizo googlear un poco y descubrí que estos archivos deberían ignorarse. Pero el primer commit ya atormenta mi repositorio. Quiero eliminar esto y liberar el espacio en disco.

Es posible eliminar git repo y agregarlo de nuevo a través del sitio web del host (assembla), pero esto no me parece una solución ... ¿Hay una forma más profesional?


ACTUALIZACIÓN:

Probé las sugerencias de la respuesta de abajo, pero no funcionó: '-f git push' 'git push --force' 'git push origin -f' 'git empujar --force origen' como resultado:

$ git push --force 
Counting objects: 19, done. 
Delta compression using up to 4 threads. 
Compressing objects: 100% (19/19), done. 
Writing objects: 100% (19/19), 6.85 KiB, done. 
Total 19 (delta 3), reused 0 (delta 0) 
remote: error: denying non-fast-forward refs/heads/master (you should pull fir 
) 
To [email protected]:xxxxx.git 
! [remote rejected] master -> master (non-fast-forward) 
error: failed to push some refs to '[email protected]:xxxxx.git' 

Respuesta

9

puede forzar a empujar el repositorio 'correcta' con git push -f. Según el host, los objetos sueltos se limpiarán cuando se ejecute git gc. actualización: de acuerdo con this no puede forzar el git gc en assembla.

Si quiere que se limpien inmediatamente y assembla no le permite forzar un git gc, la otra opción es eliminar el repositorio y pulsar uno nuevo.

Además, como dijo Ryan en los comentarios, asegúrese de que todos sepan que puede haber clonado el repositorio, que reescribió la historia.

+0

+1, pero 1) asegúrese de que la recolección de elementos no utilizados se ejecute regularmente, ya que los objetos huérfanos no se limpiarán hasta que sean elegibles, y 2) asegúrese de que todos sepan que está reescribiendo el historial. –

+1

Si puede, fuerce una eliminación de la rama maestra remota 'git push origin: master'. Algunas configuraciones de repositorio remoto no permitirán esto. – basicxman

+0

¿Qué quiere decir exactamente con 'eliminar el repositorio'? ¿Hay algún comando especial para eso o simplemente quieres hacerlo a través de la página web de assembla? – gisek