2010-09-11 20 views
18

Cometí un error ... y no sé cómo solucionarlo.Deshacer un git push en github

Explicar el problema.

Estaba trabajando en mi proyecto, e hice un primer compromiso. En este comprometen 2 archivos inútiles grandes se habían añadido ... Yo no quería estos archivos así que hice un

git rm file 

Entonces comprometido de nuevo. Y soy estúpido, porque presioné a github jejeje :).

Creo que ha encontrado el problema ...

¿Cómo puedo eliminar definitivamente estos archivos de mis repositorios locales y GitHub GitHub (especialmente ...)

me encontré con un poco de ayuda en el Internet, pero no quiero romper todo mi repositorio.

Gracias

Respuesta

29

Si nadie más ha tirado, solo debe volver a poner su rama local como desee (probablemente reiniciando a una posición anterior, o haciendo una rebase interactiva para eliminar la confirmación no deseada), luego vuelva a presionar a github con la opción -f (fuerza):

git push -f <remote-name> <branch-name> 

Si otras personas se han retirado, el consejo generalmente se aplica: leer la sección recovering from upstream rebase de la página del manual de git-rebase para ver lo que está haciendo a los otros antes haces tu actualización forzada.

3

Si desea eliminar (no revertir, quito) última confirmación con nuevos archivos, creo que debe hacer:

git reset --soft "HEAD^" 

De todos modos, puesto que ya lo empujó a github, se puede' t eliminarlo sin volver a crear git repo. Así es como funciona, puede revertir cada confirmación, por ejemplo, confirmar dónde eliminó esos 2 archivos grandes. Como es un repositorio nuevo y estás hablando de una confirmación inicial, volver a crear el repositorio me parece una buena idea.

+4

"no se puede eliminar sin volver a crear git repo" er, sí se puede. Puede molestar a otras personas si han tirado, pero puedes hacerlo. – Cascabel

+2

No tenía idea de que puedes eliminarlo del repositorio remoto, gracias amigo. –

+0

Simplemente 'git reset HEAD ^' está bien; el restablecimiento mixto también restablece el área de ensayo pero (a diferencia de '--hard') deja intacto el directorio de trabajo. A partir de ahí, 'git add -p' es a menudo el siguiente paso. – Kos