1486 votos

Eliminar archivos de Git commit

Estoy usando Git y he confirmado algunos archivos usando

git commit -a

Más tarde, descubrí que se había añadido por error un archivo al commit.

¿Cómo puedo eliminar un archivo del último commit?

2842voto

juzzlin Puntos 3839

Creo que otras respuestas aquí son erróneas, porque se trata de mover los archivos confirmados por error al área de preparación desde el commit anterior, sin cancelar los cambios realizados en ellos. Esto se puede hacer como Paritosh Singh sugirió:

git reset --soft HEAD^ 

o

git reset --soft HEAD~1

A continuación, restablecer los archivos no deseados con el fin de dejarlos fuera de la commit:

git reset HEAD path/to/unwanted_file

Ahora commit de nuevo.

296voto

CharlesB Puntos 27070

ATENCIÓN ¡! Si sólo desea eliminar un archivo de su anterior commit, y guardarlo en el disco , leer Respuesta de juzzlin .

Si este es su último commit y quiere eliminar completamente el archivo de su repositorio local y del remoto puedes hacerlo:

  1. eliminar el archivo git rm <file>
  2. commit con bandera de modificación: git commit --amend

La bandera amend le dice a git que commit de nuevo, pero "fusione" (no en el sentido de fusionar dos ramas) este commit con el último commit.

41voto

Paritosh Singh Puntos 2112

Si no ha introducido los cambios en el servidor, puede utilizar

git reset --soft HEAD~1

Restablecerá todos los cambios y revertirá a un commit de vuelta

Si usted ha empujado sus cambios a continuación, siga los pasos como respondió @CharlesB

38voto

Bob Flannigon Puntos 553

Si se elimina el archivo con rm, se borrará.

Siempre estás añadiendo a un commit en git en lugar de eliminarlo, así que en este caso devuelve el archivo al estado en el que estaba antes del primer commit (esto puede ser una acción de borrado 'rm' si el archivo es nuevo) y luego re-commit y el archivo se irá.

Para devolver el archivo a un estado anterior:

    git checkout <commit_id> <path_to_file>

o para devolverlo al estado en el HEAD remoto:

    git checkout origin/master <path_to_file>

luego modifique el commit y debería ver que el archivo ha desaparecido de la lista (¡y no se ha borrado del disco!)

35voto

git checkout HEAD~ path/to/file
git commit --amend

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X