usar tag repositorio qué podemos para ignorar eliminar deshacer como comando borrar archivos archivo algo git git-rm

tag - Cómo eliminar múltiples archivos eliminados en el repositorio Git



ignorar archivos git (16)

He borrado algunos archivos y el estado de git se muestra a continuación.

Me he comprometido y empujado.

GitHub todavía muestra los archivos eliminados en el repositorio. ¿Cómo puedo eliminar archivos en el repositorio de GitHub?

# On branch master # Changes not staged for commit: # (use "git add/rm <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # deleted: modules/welcome/language/english/kaimonokago_lang.php # deleted: modules/welcome/language/french/kaimonokago_lang.php # deleted: modules/welcome/language/german/kaimonokago_lang.php # deleted: modules/welcome/language/norwegian/kaimonokago_lang.php

Si uso git rm , da lo siguiente.

usage: git rm [options] [--] <file>... -n, --dry-run dry run -q, --quiet do not list removed files --cached only remove from the index -f, --force override the up-to-date check -r allow recursive removal --ignore-unmatch exit with a zero status even if nothing matched


¡Tenía este problema de archivos fantasma apareciendo en mi repositorio después de que los eliminé y encontré este comando ordenado!

git add -A

Es esencialmente lo mismo que git add -a y git add -u combinados, pero git add -u mayúsculas y minúsculas. Lo obtuve de este enlace impresionante (este enlace apunta a la versión en archive.org ahora, porque el original se ha convertido en una página de spam / phishing desde junio de 2016)


Actualiza todos los cambios que hiciste:

git add -u

Los archivos eliminados deben cambiar de no en fase (generalmente color rojo) a puesta en escena (verde). Luego comprométete a eliminar los archivos eliminados:

git commit -m "note"


Aquí es cómo detectar archivos eliminados y organizar su eliminación como parte de la próxima confirmación. Todas las soluciones en este hilo tienen diferentes méritos. Esta solución a continuación trata específicamente el problema de los nombres de archivos con espacios en ellos.

git status --porcelain | awk ''/^.D .*$/ {print $0}'' | sed ''s/.D /(.*/)//1/'' | tr -d ''"'' | xargs -I {} git rm ''{}''

asegúrese de probar esto con la opción --dry-run de git antes de ejecutarlo con lo siguiente:

git status --porcelain | awk ''/^.D .*$/ {print $0}'' | sed ''s/.D /(.*/)//1/'' | tr -d ''"'' | xargs -I {} git rm --dry-run ''{}''

explicación:

git status --porcelain

Esto imprime algo como D "/ ruta a una carpeta / ruta a un archivo" que sucede solo cuando hay espacios en los nombres de ruta

awk ''/^.D .*$/ {print $0}''

Unir solo las líneas que comienzan con "D"

sed ''s/ D /(.*/)//1/''

quitar "D" de la parte delantera de cada cadena

tr -d ''"''

eliminar citas, si las hay

xargs -I {} git rm ''{}''

defina las variables de nombre de archivo como {} ejecute el nombre de archivo bajo git rm entre comillas simples para asegurarse de que admita los nombres de archivo con espacios.


Cuando tengo una gran cantidad de archivos que he eliminado y que no están en fase de confirmación, puedes agruparlos en un solo programa con:

for i in `git status | grep deleted | awk ''{print $3}''`; do git rm $i; done

Como mencionó el respondedor de la pregunta, tenga cuidado con git rm .


La función de limpieza incorporada también puede ser útil ...

git clean -fd


La mejor solución si no te importa la organización de archivos modificados es usar git add -u como dicen mshameers y / o pb2q .

Si solo desea eliminar los archivos eliminados, pero no modificar los archivos modificados, creo que debería usar el argumento ls-files con la opción --deleted (no es necesario usar expresiones regulares u otros argumentos / opciones complejos):

git ls-files --deleted | xargs git rm


Otra versión para contestar ByScripts es

git rm $(git ls-files --deleted)

Esto SOLO eliminará los archivos borrados del git.

También se puede usar para agregar SOLO archivos modificados.

git add $(git ls-files --modified)

Estos comandos también funcionan en gitbash para windows.


Prueba esto:

git rm `git ls-files -d`


Puede crear un script de shell que eliminará todos sus archivos cuando se ejecute:

git status | grep deleted | awk ''{print "git rm " $3;}'' > ../remove.sh

El script que se crea es remove.sh y contiene la lista completa de comandos git rm .


Puedes usar

git commit -m "remove files" -a git push

Después de haber eliminado archivos manualmente.


Sí, git rm <filename> mostrará el estado eliminado de un archivo, donde <filename> podría ser un patrón global:

$ git rm modules/welcome/language/*/kaimonokago_lang.php rm modules/welcome/language/english/kaimonokago_lang.php rm modules/welcome/language/french/kaimonokago_lang.php rm modules/welcome/language/german/kaimonokago_lang.php rm modules/welcome/language/norwegian/kaimonokago_lang.php $ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # deleted: modules/welcome/language/english/kaimonokago_lang.php # ...

Entonces, puede comprometerse.

git commit -a hará esto de una vez, si lo desea.

También puede usar git add -u para realizar todos los cambios, incluidos todos los archivos eliminados, y luego confirmar.


Si desea eliminarlos todos usando "git rm". Esto es lo que hago:

git ls-files --deleted -z | xargs -0 git rm

Esta consulta enumera todos los archivos que se han eliminado y los elimina de su repositorio git. Espero eso ayude.


Tenga mucho cuidado con git rm . ; podría quitar más de lo que quieres. Por supuesto, puede recuperarse, pero es más simple no tener que hacerlo.

Lo más simple sería:

git rm modules/welcome/language/english/kaimonokago_lang.php / modules/welcome/language/french/kaimonokago_lang.php / modules/welcome/language/german/kaimonokago_lang.php / modules/welcome/language/norwegian/kaimonokago_lang.php

No puede usar comodines de shell porque los archivos no existen, pero podría usar (al menos en Bash):

git rm modules/welcome/language/{english,french,german,norwegian}/kaimonokago_lang.php

O considere:

git status | sed -n ''/^# *deleted:/s///p'' | xargs git rm

Esto toma la salida del git status de git status , no imprime nada por defecto ( sed -n ), pero en las líneas que comienzan # deleted: el # y el deleted: e imprime lo que queda; xargs reúne los argumentos y los proporciona a un comando git rm . Esto funciona para cualquier número de archivos, independientemente de la similitud (o disimilitud) en los nombres.


git add -u

actualiza todos tus cambios


git add -u . git add --update .


git status | sed ''s/^#/s*deleted:/s*//'' | sed ''s/^#.*//'' | xargs git rm -rf