git rm
Descripción del comando git rm
El comando git rm elimina archivos específicos o un grupo de archivos de un repositorio Git. La función principal de git rm es eliminar archivos rastreados del índice. git rm también se puede usar para eliminar archivos tanto del índice de preparación como del directorio de trabajo. Sin embargo, un archivo no se puede eliminar solo del directorio de trabajo. Cabe mencionar que el comando git rm no elimina ramas. Nota: git rm solo funciona con archivos rastreados. Fallará si intentas eliminar un archivo no rastreado.

Uso del comando git rm
<file>… | Especifica qué archivos eliminar. |
|---|---|
| -f --force | Anula la comprobación de seguridad para asegurar que los archivos en HEAD correspondan al contenido del índice de preparación y del directorio de trabajo. |
| -n --dry-run | Ejecuta el comando git rm, pero en realidad no elimina los archivos. Solo muestra qué archivos se eliminarían. |
| -r | Es una abreviatura de 'recursive' (recursivo). git rm elimina un directorio objetivo y todo su contenido cuando se trabaja en modo recursivo. |
| -- | Establece una distinción clara entre una lista de nombres de archivos y los argumentos que se pasan a git rm. |
| --cached | Especifica que la eliminación debe ocurrir solo en el índice de preparación. Los archivos del directorio de trabajo se dejan intactos. |
| --ignore-unmatch | Sale con un estado 0 incluso si no se encontraron archivos coincidentes. Es un código de estado a nivel de Unix. |
| -q --quiet | Oculta la salida del comando git rm. El comando git rm normalmente muestra una línea por cada archivo eliminado. |
Deshacer git rm
El comando git rm actualiza el índice de preparación y el directorio de trabajo. Estas modificaciones no se guardarán hasta que se cree un nuevo commit. Pueden deshacerse con comandos de Git. Para desmarcar la eliminación (dejando el archivo eliminado en el directorio de trabajo), usa: git reset HEAD
git reset HEADPara restaurar completamente el archivo a su versión más reciente tanto en el índice de preparación como en el directorio de trabajo, usa el comando moderno git restore: git restore
git restore <file>(Nota: git checkout . está en desuso para restaurar archivos.)
Para eliminar un archivo solo del índice de preparación (dejándolo en el directorio de trabajo), usa la bandera --cached: git rm --cached
git rm --cached <file>Usa git reflog para encontrar una referencia anterior a la ejecución de git rm, en caso de que se ejecute git rm y se cree un nuevo commit que persista la eliminación.
git rm vs rm
Cuando se ejecuta un comando rm ordinario del shell sobre un archivo que está rastreando, el repositorio Git lo reconoce y actualiza solo el directorio de trabajo para reflejar la eliminación. Para agregar las modificaciones al índice de preparación, también debe ejecutarse el comando git add. El comando git rm actualiza tanto el índice de preparación como el directorio de trabajo con la eliminación.
Ejemplos
Consideremos el siguiente ejemplo:
git rm con comodines
git rm folder/\*.txtUsamos un comodín de archivo (glob) para eliminar todos los archivos *.txt. Estos archivos son hijos directos del directorio folder. Colocamos una barra invertida antes del asterisco para evitar que el shell expanda el comodín. Luego, el comodín expande las rutas de los archivos y subdirectorios.
git rm -f
git rm -f git-*.shLa opción de fuerza se usa en el ejemplo para eliminar los archivos objetivo del directorio de trabajo y del índice de preparación.
Eliminar archivos que ya no existen en el sistema de archivos
Si deseas registrar todos los archivos eliminados como parte del siguiente commit, prepara las eliminaciones primero con `git add -u`, luego ejecuta `git commit`.
Pero si deseas eliminar continuamente todos los archivos que se han eliminado con el shell rm, usa el siguiente comando, que creará una lista de todos los archivos eliminados del directorio de trabajo y la canalizará a git rm --cached para actualizar el índice de preparación:
git rm --cached
git diff --name-only --diff-filter=D -z | xargs -0 git rm --cachedPráctica
¿Cuáles son las funciones y opciones del comando 'git rm'?