stop remove origin hard from cached git git-reset git-index git-rm

remove - git rm cached gitignore



"Git rm--cached x" frente a "git reset head-x"? (3)

Hay tres lugares donde un archivo, por ejemplo, puede ser: el árbol, el índice y la copia de trabajo. Cuando acaba de agregar un archivo a una carpeta, lo está agregando a la copia de trabajo.

Cuando hagas algo como git add file al índice. Y cuando lo cometes, lo agregas al árbol también.

Probablemente te ayude a conocer los tres indicadores más comunes en el restablecimiento de git:

git reset [- <mode> ] [ <commit> ]

Esta forma restablece el encabezado actual a <commit> y posiblemente actualiza el índice (restableciéndolo al árbol de <commit> ) y el árbol de trabajo dependiendo de <mode> , que debe ser uno de los siguientes:
--suave

No toca el archivo de índice ni el árbol de trabajo en absoluto (pero restablece el encabezado a <commit> , al igual que todos los modos). Esto deja todos los archivos modificados "Cambios que se comprometerán", como lo indicaría el estado de git.

--mezclado

Restablece el índice pero no el árbol de trabajo (es decir, los archivos modificados se conservan pero no se marcan para la confirmación) e informa lo que no se ha actualizado. Esta es la acción por defecto.

--difícil

Restablece el índice y el árbol de trabajo. Cualquier cambio en los archivos rastreados en el árbol de trabajo desde <commit> se descarta.

Ahora, cuando hagas algo como git reset HEAD , lo que en realidad estás haciendo es git reset HEAD --mixed y "reiniciará" el índice al estado en que estaba antes de que comenzaras a agregar archivos / agregar modificaciones al índice (a través de git add ) En este caso, la copia de trabajo y el índice (o clasificación) estaban sincronizados, pero usted hizo que HEAD y el índice estuvieran sincronizados después del reinicio.

git rm por otro lado, elimina un archivo del directorio de trabajo y del índice, y cuando se confirma, el archivo también se elimina del árbol. git rm --cached sin embargo, elimina el archivo del índice solo y lo mantiene en su copia de trabajo. Esto es exactamente lo opuesto al git add file En este caso, hizo que el índice sea diferente del HEAD y el que funciona, en el que HEAD tiene la versión previamente comprometida del archivo, la copia de trabajo tenía la última modificación, si corresponde, o el contenido desde HEAD del archivo y eliminó el archivo del índice. Una confirmación ahora sincronizará el índice y el árbol y el archivo se eliminará.

GitRef.org - Básico :

git rm eliminará las entradas del área de preparación. Esto es un poco diferente de git reset HEAD que "descomprime" los archivos. Al decir "fuera del escenario" quiero decir que revierte el área de preparación a lo que estaba allí antes de que empezáramos a modificar las cosas. git rm por otro lado, simplemente patea el archivo fuera del escenario por completo, por lo que no está incluido en la próxima instantánea de confirmación, lo que efectivamente elimina.

De forma predeterminada, un git rm file eliminará por completo el archivo del área de ensayo y también de su disco> (el directorio de trabajo). Para dejar el archivo en el directorio de trabajo, puede usar git rm --cached .

Pero, ¿cuál es exactamente la diferencia entre git rm --cached asd y git reset head -- asd ?


Tal vez un ejemplo ayude:

git rm --cached asd git commit -m "the file asd is gone from the repository"

versus

git reset HEAD -- asd git commit -m "the file asd remains in the repository"

Tenga en cuenta que si no ha cambiado nada más , la segunda confirmación no hará nada.


git rm --cached file eliminará el archivo del escenario. Es decir, cuando confirme el archivo se eliminará. git reset HEAD -- file simplemente restablecerá el archivo en el área de transición al estado donde estaba en la confirmación HEAD, es decir, deshará cualquier cambio que le haya hecho desde el último commit. Si ese cambio acaba de agregar el archivo, serán equivalentes.