He eliminado 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 lo 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
Respuestas:
actualiza todos tus cambios
fuente
Ten mucho cuidado
git rm .
; puede eliminar más de lo que quieres. Por supuesto, puede recuperarse, pero es más sencillo no tener que hacerlo.Más simple sería:
No puede usar comodines de shell porque los archivos no existen, pero podría usar (al menos en Bash):
O considere:
Esto toma la salida de
git status
, no imprime nada por defecto (sed -n
), pero en las líneas que comienzan# deleted:
, elimina el#
y eldeleted:
y imprime lo que queda;xargs
reúne los argumentos y los proporciona a ungit rm
comando. Esto funciona para cualquier número de archivos, independientemente de la similitud (o diferencia) en los nombres.fuente
git diff --diff-filter=D --name-only -z | xargs -0 git rm
es un enfoque más confiable que intentar analizar,git status
que está orientado al usuario y no se garantiza que sea estable en futuras versiones.git diff
(que no tenía, ya que no había tenido la necesidad antes). ¡Gracias!git ls-files --deleted | xargs git rm
hizo el truco para mí.Otra versión de la respuesta de ByScripts es
Esto SOLO eliminará los archivos eliminados del git.
También podría usarse para agregar SOLAMENTE archivos modificados también.
Estos comandos también funcionan en gitbash para windows.
fuente
git ls-files
estado con eliminado o modificado es muy útil.'git add --update (or -u)'
sin argumento de ruta desde un subdirectorio del árbol cambiará en Git 2.0 y ya no debería usarse. Para agregar contenido para todo el árbol, ejecute:git add --update :/
(o git add -u: /) Para restringir el comando al directorio actual, ejecute:git add --update .
(o git add -u.) Con la versión actual de Git, el comando está restringido a directorio actualsrc/my spaced directory/myfile
. Esto se puede manejar individualmente, pero ¿cómo se puede manejar usando los comandos de esta respuesta?Actualice todos los cambios que realizó:
Los archivos eliminados deben cambiar de no en escena (generalmente de color rojo) a en escena (verde). Luego, comprométase a eliminar los archivos eliminados:
fuente
La mejor solución si no le importa organizar archivos modificados es usarlo
git add -u
como dicen mshameers y / o pb2q .Si solo desea eliminar los archivos eliminados, pero no realizar ninguna modificación, creo que debería usar el
ls-files
argumento con la--deleted
opción (no es necesario usar expresiones regulares u otras opciones / argumentos complejos):fuente
git add -A
resuelve este problema ... solo en caso de que alguien quiera saber en el futuro. compruebe la respuesta a continuaciónSí,
git rm <filename>
organizará el estado eliminado de un archivo, donde<filename>
podría haber un patrón global:Entonces, puedes comprometerte.
git commit -a
hará esto de una vez, si quieres.También puede usar
git add -u
para organizar todos los cambios, incluidos todos los archivos eliminados, y luego confirmar.fuente
git add -u
es exactamente lo que estamos buscando: si realiza muchas eliminaciones, entonces desea confirmar todas las eliminaciones, esa parece ser la forma más fácil y `` estándar '' (es decir, sin globos específicos de casos o análisis de shell complejos en xargs). ¿Hay alguna razón por la que no quisiéramos usar esto, aparte del hecho de que agrega todos los cambios a la vez?Cuando tengo muchos archivos que he eliminado que no están organizados para la confirmación, puedes
git rm
verlos en un solo programa con:Como se mencionó en la pregunta, tenga cuidado con
git rm
.fuente
Prueba esto:
fuente
Puedes usar
Después de haber eliminado archivos manualmente.
fuente
Puede crear un script de shell que eliminará todos sus archivos cuando se ejecute:
El script que se crea es
remove.sh
y contiene la lista completa degit rm
comandos.fuente
fuente
fuente
Si desea eliminarlos todos usando "git rm". Esto es lo que hago:
Esta consulta enumera todos los archivos que se han eliminado y los elimina del repositorio de git. Espero eso ayude.
fuente
La función de limpieza integrada también puede ser útil ...
fuente
¡Tuve este problema de archivos fantasmas que aparecen en mi repositorio después de que los eliminé y encontré este comando ordenado!
git add -A
Es esencialmente igual
git add -a
ygit add -u
combinado, pero distingue entre mayúsculas y minúsculas. Lo obtuve de este increíble enlace (este enlace apunta a la versión en archive.org ahora, porque el original se ha convertido en una página de spam / phishing a partir de junio de 2016)fuente
Aquí se explica 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.
asegúrese de probar esto con la opción --dry-run de git antes de ejecutarlo con lo siguiente:
explicación:
Esto imprime algo como D "/ ruta a una carpeta / ruta a un archivo" que ocurre solo cuando hay espacios en los nombres de ruta
solo coincide con las líneas que comienzan con "D"
eliminar "D" del frente de cada cadena
eliminar comillas, si las hay
defina las variables de nombre de archivo como {} ejecute el nombre del archivo en git rm entre comillas simples para asegurarse de que admite nombres de archivos con espacios.
fuente