Basta ya de indagar por todo internet porque has llegado al espacio perfecto, tenemos la solución que quieres pero sin liarte.
Nombre
git-rm: elimina archivos del árbol de trabajo y del índice
Sinopsis
gitrm[-f | --force][-n][-r][--cached][--ignore-unmatch][--quiet][--pathspec-from-file=<file>[--pathspec-file-nul]][--][<pathspec>…]
Descripción
Elimine los archivos que coincidan con la especificación de ruta del índice, o del árbol de trabajo y el índice. git rm
no eliminará un archivo solo de su directorio de trabajo. (No hay ninguna opción para eliminar un archivo solo del árbol de trabajo y, sin embargo, mantenerlo en el índice; use /bin/rm
si desea hacer eso.) Los archivos que se eliminan deben ser idénticos a la punta de la rama, y no se pueden realizar actualizaciones de su contenido en el índice, aunque ese comportamiento predeterminado se puede anular con el -f
opción. Cuando --cached
se proporciona, el contenido organizado tiene que coincidir con la punta de la rama o el archivo en el disco, lo que permite que el archivo se elimine solo del índice.
Opciones
-
… -
Archivos para eliminar. Un nombre de directorio principal (p. Ej.
dir
para eliminardir/file1
ydir/file2
) para eliminar todos los archivos del directorio y, de forma recursiva, todos los subdirectorios, pero esto requiere-r
opción que se dará explícitamente.El comando elimina solo las rutas conocidas por Git.
Coincidencias de globalización de archivos a través de los límites del directorio. Por lo tanto, dados dos directorios
d
yd2
, hay una diferencia entre usargit rm 'd*'
ygit rm 'd/*'
, ya que el primero también eliminará todo el directoriod2
.Para obtener más detalles, consulte la
pathspec
entrada en glosario[7]. - -F
- –fuerza
-
Anule la verificación actualizada.
- -norte
- – corrida en seco
-
En realidad, no elimine ningún archivo. En su lugar, solo muestre si existen en el índice y, de lo contrario, el comando los eliminaría.
- -r
-
Permitir la eliminación recursiva cuando se proporciona un nombre de directorio principal.
- –
-
Esta opción se puede utilizar para separar las opciones de la línea de comandos de la lista de archivos (útil cuando los nombres de archivo pueden confundirse con las opciones de la línea de comandos).
- – en caché
-
Utilice esta opción para desestandarizar y eliminar rutas solo del índice. Los archivos de árbol de trabajo, modificados o no, se dejarán en paz.
- –ignore-unmatch
-
Salga con un estado cero incluso si no hay archivos que coincidan.
- -q
- –tranquilo
-
git rm
normalmente genera una línea (en forma derm
comando) para cada archivo eliminado. Esta opción suprime esa salida. - –pathspec-from-file =
-
Pathspec se pasa en
en lugar de argumentos de línea de comandos. Si
es exactamente-
entonces se usa la entrada estándar. Los elementos Pathspec están separados por LF o CR / LF. Los elementos de Pathspec se pueden citar como se explica para la variable de configuracióncore.quotePath
(ver git-config[1]). Ver también--pathspec-file-nul
y global--literal-pathspecs
. - –pathspec-file-nul
-
Solo significativo con
--pathspec-from-file
. Los elementos Pathspec se separan con el carácter NUL y todos los demás caracteres se toman literalmente (incluidas las nuevas líneas y las comillas).
Eliminar archivos que han desaparecido del sistema de archivos
No hay opcion para git rm
para eliminar del índice solo las rutas que han desaparecido del sistema de archivos. Sin embargo, dependiendo del caso de uso, hay varias formas de hacerlo.
Usando “git commit -a”
Si tiene la intención de que su próxima confirmación debe registrar todas las modificaciones de los archivos rastreados en el árbol de trabajo y registrar todas las eliminaciones de archivos que se han eliminado del árbol de trabajo con rm
(Opuesto a git rm
), usar git commit -a
, ya que notará y registrará automáticamente todas las eliminaciones. También puede tener un efecto similar sin comprometerse usando git add -u
.
Usando “git add -A”
Al aceptar una nueva caída de código para una sucursal de un proveedor, probablemente desee registrar tanto la eliminación de rutas como las adiciones de nuevas rutas, así como las modificaciones de las rutas existentes.
Por lo general, primero eliminaría todos los archivos rastreados del árbol de trabajo con este comando:
git ls-files -z |xargs -0 rm -f
y luego descomprima el código nuevo en el árbol de trabajo. Alternativamente podrías rsync
los cambios en el árbol de trabajo.
Después de eso, la forma más sencilla de registrar todas las eliminaciones, adiciones y modificaciones en el árbol de trabajo es:
gitadd -A
Ver git-add[1].
Otras maneras
Si todo lo que realmente quiere hacer es eliminar del índice los archivos que ya no están presentes en el árbol de trabajo (tal vez porque su árbol de trabajo está sucio y no puede usar git commit -a
), use el siguiente comando:
gitdiff --name-only --diff-filter=D -z |xargs -0 gitrm --cached
Submódulos
Solo los submódulos que usan un archivo git (lo que significa que fueron clonados con una versión 1.7.8 de Git o más reciente) se eliminarán del árbol de trabajo, ya que su repositorio vive dentro del directorio .git del superproyecto. Si un submódulo (o uno de los anidados dentro de él) todavía usa un directorio .git, git rm
moverá el directorio git de submódulos al directorio git de superproyectos para proteger el historial del submódulo. Si existe el submódulo.
Un submódulo se considera actualizado cuando el HEAD es el mismo que el registrado en el índice, no se modifican archivos con seguimiento y no hay archivos sin seguimiento que no se ignoren están presentes en el árbol de trabajo de los submódulos. Los archivos ignorados se consideran prescindibles y no impedirán que se elimine el árbol de trabajo de un submódulo.
Si solo desea eliminar el pago local de un submódulo de su árbol de trabajo sin realizar la eliminación, use git-submodule[1]deinit
en lugar de. Ver también gitsubmodules[7] para obtener detalles sobre la eliminación de submódulos.
Ejemplos de
git rm Documentation/*.txt
-
Elimina todo
*.txt
archivos del índice que están bajo elDocumentation
directorio y cualquiera de sus subdirectorios.Tenga en cuenta que el asterisco
*
se cita del shell en este ejemplo; esto permite a Git, y no al shell, expandir los nombres de ruta de archivos y subdirectorios bajo elDocumentation/
directorio. git rm -f git-*.sh
-
Debido a que este ejemplo permite que el shell expanda el asterisco (es decir, está enumerando los archivos explícitamente), no elimina
subdir/git-foo.sh
.
Insectos
Cada vez que una actualización de un superproyecto elimina un submódulo poblado (por ejemplo, cuando se cambia entre confirmaciones antes y después de la eliminación), el pago de un submódulo obsoleto permanecerá en la ubicación anterior. Eliminar el directorio antiguo solo es seguro cuando usa un gitfile, ya que de lo contrario también se eliminará el historial del submódulo. Este paso quedará obsoleto cuando se haya implementado la actualización recursiva del submódulo.
Ver también
git-add[1]
Si tienes algún titubeo o capacidad de perfeccionar nuestro escrito te sugerimos añadir un comentario y con placer lo interpretaremos.