¿Es posible destrabar el último cambio organizado (no comprometido) en git ? Supongamos que hay muchos archivos en la rama actual, algunos organizados, otros no. En algún momento, un programador tonto ejecutó accidentalmente:
git add -- .
...en vez de:
git checkout -- .
¿Puede este programador ahora mostrar sus últimos cambios con algún comando mágico de git ? ¿O debería haberse comprometido antes de experimentar en primer lugar?
git add
comando, especialmente para los archivos que ya tenían cambios organizados, y que tenían algunos cambios que debían deshacerse, no organizarse. Sin embargo, no puedo decir que la otra pregunta no esté relacionada.Respuestas:
Puedes usar
git reset
. Esto 'desestabilizará' todos los archivos que haya agregado después de su última confirmación.Si solo quiere quitar el escenario de algunos archivos, úselos
git reset -- <file 1> <file 2> <file n>
.También es posible eliminar algunos de los cambios en los archivos mediante el uso
git reset -p
.fuente
-p
interruptor. ¡Gracias! :)No puede deshacer el último git add, pero puede deshacer todos los correos
add
electrónicos desde la última confirmación.git reset
sin un argumento de confirmación restablece el índice (cambios por etapas sin etapas):fuente
reset
usar un solo archivo o usarloreset -p
para quitar el escenario de un trozo específico.Entonces la verdadera respuesta a
es en realidad: No, no puedes quitar el escenario solo el último
git add
.Eso es si interpretamos la pregunta como en la siguiente situación:
Archivo inicial:
Primer cambio seguido de
git add
:Segundo cambio seguido de
git add
:En este caso,
git reset -p
no ayudará, ya que su granularidad más pequeña son las líneas.git
no sabe eso sobre el estado intermedio de:nunca más.
fuente
Podrías usar
git reset
(ver documentos )fuente
En la fecha, git pregunta:
use "git rm --cached <file>..." to unstage
si los archivos no estaban en el repositorio. Desestabiliza los archivos manteniéndolos allí.use "git reset HEAD <file>..." to unstage
si los archivos estaban en el repositorio y los agrega como modificados. Mantiene los archivos como están y los desestabiliza.Que yo sepa, no puede deshacer el,
git add --
pero puede eliminar una lista de archivos como se mencionó anteriormente.fuente
Elimine el archivo del índice, pero manténgalo versionado y deje cambios sin confirmar en la copia de trabajo:
Restablezca el archivo al último estado desde HEAD, deshaciendo los cambios y eliminándolos del índice:
Esto es necesario ya
git reset --hard HEAD
que no funcionará con archivos individuales.Eliminar
<file>
del índice y el control de versiones, manteniendo el archivo sin versión con cambios en la copia de trabajo:Eliminar
<file>
de la copia de trabajo y el control de versiones por completo:fuente
Si desea eliminar todos los archivos agregados de git para commit
Si desea eliminar un archivo individual
fuente
Puedes usar
para deshacer los archivos locales recientemente agregados
para deshacer los cambios para un archivo específico
fuente
Dependiendo del tamaño y la escala de la dificultad, puede crear una rama temporal (temporal) y comprometer el trabajo actual allí.
Luego, cambie a su sucursal original, y seleccione los archivos apropiados del scratch commit.
Al menos tendría un registro permanente de los estados actuales y anteriores para trabajar (hasta que elimine esa rama temporal).
fuente