En SVN, eliminar algo del sistema de archivos directamente (en lugar de usar svn) creó una gran cantidad de dolores de cabeza.
No he encontrado que esto sea un problema al usarlo git
, pero noto que git tiene su propia rm
implementación ( git rm
).
¿Cuál es la diferencia entre rm
y git rm
?
git reset --hard
y luego hacer un checkout de master para salir del estado de la cabeza separada porque sabía que no tenía ningún cambio no comprometido. Si no ha confirmado sus cambios, es posible que desee hacer un alijo git, pero soy relativamente nuevo en git, así que no sé el comando exacto. Si ha venido aquí en o después de 2014, espero que esta respuesta le haya sido útil.rm
(en lugar degit rm
) y eliminé muchos archivos al usarlo, y ahora no quierogit
rastrearlos. ¿Hay alguna manera de revertir los cambios? Quierogit
pisar mirm
como eliminado ya que no lo uségit rm
en primer lugar.Eliminar archivos usando
rm
no es un problema en sí mismo, pero si luego quiere confirmar que el archivo fue eliminado, tendrá que hacerlo degit rm
todos modos, por lo que podría hacerlo de esa manera de inmediato.Además, dependiendo de su shell,
git rm
después de haber eliminado el archivo, no obtendrá la finalización de la pestaña, por lo que tendrá que deletrear la ruta usted mismo, mientras que sigit rm
aún existe el archivo, la finalización de la pestaña funcionará normalmente.fuente
git rm
eliminará el archivo del índice y del directorio de trabajo (solo índice si lo usó--cached
) para que la eliminación se organice para la próxima confirmación.fuente
Sin embargo, si terminas usando rm en lugar de git rm. Puede omitir el git add y confirmar directamente los cambios usando:
git commit -a
fuente
Así es como puede eliminar un archivo usando
rm -f
y luego eliminarlo de su índice congit rm
Sin embargo, puede hacer todo esto de una sola vez con solo
git rm
fuente
Cuando use git rm, la eliminación formará parte de su próxima confirmación. Entonces, si desea impulsar el cambio, debe usar git rm
fuente
Agregando a la respuesta de Andy, hay una utilidad adicional para
git rm
:Seguridad : al hacerlo en
git rm
lugar de hacerlorm
, Git bloqueará la eliminación si hay una discrepancia entre laHEAD
versión de un archivo y el índice de ensayo o la versión del árbol de trabajo. Este bloque es un mecanismo de seguridad para evitar la eliminación de cambios en curso.Salvaguardando :
git rm --dry-run
. Esta opción es una protección que ejecutará elgit rm
comando pero no eliminará los archivos. En su lugar, generará los archivos que habría eliminado.fuente