2012-09-30 18 views
57

Estoy tratando de aprender Git. Estoy confundido entregit rm -cached file vs git reset file

git rm --cached file 

y

git reset file 

tanto de los comandos parecen tomar el archivo de puesta en escena a la zona de no-puesta en escena. ¿Cómo difieren los comandos?

+2

posible duplicado de [¿Cuál es la diferencia entre \ 'git rm --cached asd \' y \ 'git reset head - asd \'] (http://stackoverflow.com/questions/5798930/whats-the- diferencia-entre-git-rm-cached-asd-y-git-reset-head-asd) – Undistraction

Respuesta

77

git rm --cached <file> eliminará completamente el contenido del archivo del índice. Esto significa que al confirmar el archivo se eliminará de la confirmación HEAD. (Si el archivo solo se agregó al índice y aún no se lo siguió, se trata de un "no-op").

git reset -- <file> restablece el contenido del archivo en el índice para que coincida con la confirmación del encabezado. Esto significa que en la confirmación no se confirmarán los cambios en el archivo. Esta operación no es válida si no hay una versión rastreada del archivo en el compromiso HEAD.

+3

Tal vez como una adición: 'git rm --cached' agregará la acción * delete * del archivo al índice, solo como 'git add' agregará una acción * add *. – poke

+0

¿Es índice == área de preparación? Si un archivo está en el índice, ¿no se rastrea por extensión? – ataulm

+0

Para la restauración de git: , debe haber una versión rastreada de ese archivo en la confirmación de HEAD. Si se agrega un nuevo archivo al índice, entonces no habrá una versión rastreada en COMPROMISO HEAD –

Cuestiones relacionadas