2011-09-15 8 views
92

En SVN, eliminar algo del sistema de archivos directamente (en lugar de usar svn) creó un montón de dolores de cabeza. Hasta el momento, al usar git, no he encontrado que esto sea un problema, pero noto que git tiene su propia implementación de rm.¿Por qué usar 'git rm' para eliminar un archivo en lugar de 'rm'?

¿Hay alguna diferencia? ¿Estoy haciendo algo mal?

Respuesta

137

Si solo usa rm, deberá hacer un seguimiento con git add <fileRemoved>. git rm hace esto en un solo paso.

También puede usar git rm --cached, que eliminará el archivo del índice (organizándolo para su eliminación en la siguiente confirmación), pero conserve su copia en el sistema de archivos local.

+0

Buena respuesta. Pude usar 'git reset --hard' y luego hacer un checkout de master para salir del estado principal separado porque sabía que no tenía ningún cambio no confirmado. Si no has cometido los cambios, es posible que desees hacer un alijo de git, pero soy relativamente nuevo en git, así que no conozco el comando exacto. Si ha venido aquí en 2014 o después, espero que esta respuesta haya sido útil para usted. –

+0

@Andy - Si usé 'rm' (en lugar de' git rm') y eliminé muchos archivos que lo usaban, y ahora no quiero que 'git' rastree esos. ¿Hay alguna manera de revertir los cambios? Quiero 'git' para pisar mi' rm' como eliminado ya que no usé 'git rm' en primer lugar. –

2

Al usar git rm, la eliminación formará parte de su próxima confirmación. Entonces, si desea presionar el cambio, debe usar git rm

5

Eliminar archivos usando rm no es un problema per se, pero si quiere confirmar que el archivo fue eliminado, tendrá que hacer un git rm de todos modos, así que bien podrías hacerlo de esa forma desde el principio.

Además, dependiendo de su caparazón, haciendo git rm después de haber eliminado el archivo, no obtendrá la terminación de pestañas, por lo que tendrá que deletrear la ruta usted mismo, mientras que si git rm mientras el archivo aún existe, tab complete funcionará de manera normal.

3

git rm eliminará el archivo del índice y del directorio de trabajo (solo indexe si usó --cached) para que la eliminación se realice para la próxima confirmación.

1

Elimina los archivos del índice, o del árbol de trabajo y el índice. git rm no eliminará un archivo de su directorio de trabajo.

Así es como es posible borrar un archivo usando rm -f y luego eliminarlo de su índice con git rm

$ rm -f index.html 
$ git status -s 
D index.html 
$ git rm index.html 
rm 'index.html' 
$ git status -s 
D index.html 

Sin embargo puede hacerlo todo de una vez con sólo git rm

$ git status -s 
$ git rm index.html 
rm 'index.html' 
$ ls 
lib vendor 
$ git status -s 
D index.html 
2

Sin embargo, si terminas usando rm en lugar de git rm. Puede omitir el git add y directamente cometen los cambios usando:

git commit -a

Cuestiones relacionadas