ultimo restaurar repositorio recuperar modificar deshacer cambiar borrar archivo git git-commit git-add git-rm

restaurar - git--amend



Eliminar mĂșltiples archivos de un repositorio de Git que ya han sido borrados del disco (28)

Probablemente estés buscando -A:

git add -A

esto es similar a git add -u, pero también agrega nuevos archivos. Esto es más o menos el equivalente del comando addremove de hg (aunque la detección de movimiento es automática).

Tengo un repo de Git que he eliminado cuatro archivos de usar rm ( no git rm ), y mi estado de Git es así:

# deleted: file1.txt # deleted: file2.txt # deleted: file3.txt # deleted: file4.txt

¿Cómo elimino estos archivos de Git sin tener que pasar manualmente y agregar cada archivo como este?

git rm file1 file2 file3 file4

Idealmente, estoy buscando algo que funcione de la misma manera que git add . si, si eso es posible


Puedes usar

git add -u

Para agregar los archivos eliminados al área de ensayo, compóralos

git commit -m "Deleted files manually"


Si esos son los únicos cambios, simplemente puede hacer

git commit -a

para comprometer todos los cambios Eso incluirá archivos eliminados.


Ninguno de los indicadores a git-add solo mostrará los archivos eliminados; si todo lo que ha modificado son archivos eliminados, entonces está bien, pero, de lo contrario, debe ejecutar git-status y analizar el resultado.

Trabajando en la respuesta de Jeremy, esto es lo que obtuve:

git status | sed -s "s/^.*deleted: //" | grep "/(/#/|commit/)" -v | xargs git rm

  1. Obtener el estado de los archivos.
  2. Para los archivos eliminados, aísle el nombre del archivo.
  3. Elimine todas las líneas que comiencen con #s, así como una línea de estado que tenga la palabra "eliminada"; No recuerdo exactamente lo que era, y ya no está allí, por lo que quizás deba modificar esto para diferentes situaciones. Creo que la agrupación de expresiones puede ser una característica específica de GNU, por lo que si no está utilizando gnutils, puede que tenga que agregar varias líneas grep -v .
  4. Pase los archivos a git rm .

Pegar esto en un alias de shell ahora ...


Necesitaba lo mismo y usé el botón "cambio de escenario" de git gui. también agrega todo.

Y después de "etapa cambiada" hice "commit" ...

entonces mi directorio de trabajo está limpio nuevamente.


Al usar git-add con las opciones ''--all'' o ''--update'', puede obtener más de lo que deseaba. Los archivos nuevos y / o modificados también se agregarán al índice. Tengo una configuración bash alias para cuando quiero eliminar archivos eliminados de git sin tocar otros archivos:

alias grma=''git ls-files --deleted -z | xargs -0 git rm''

Todos los archivos que se han eliminado del sistema de archivos se agregan al índice como eliminados.


No es que realmente importe, pero no estoy de acuerdo con la respuesta elegida:

git add -u

... eliminará los archivos del índice si se eliminaron los archivos correspondientes en el árbol de trabajo, pero también incluirá los nuevos contenidos modificados de los archivos rastreados.

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

... por otro lado, solo se ejecutarán los archivos eliminados que fueron rastreados.

Entonces este último en mi opinión es la mejor opción.


git ls-files --deleted | xargs git rm

es la mejor opción para agregar solo archivos eliminados.

Aquí hay algunas otras opciones.

git add . => Add all (tracked and modified)/new files in the working tree. git add -u => Add all modified/removed files which are tracked. git add -A => Add all (tracked and modified)/(tracked and removed)/new files in the working tree. git commit -a -m "commit message" - Add and commit modified/removed files which are tracked.


La solución más flexible que he encontrado hasta la fecha es

git cola

Y seleccione todos los archivos eliminados que quiero representar.

(Nota: generalmente hago todo lo que se usa en git, pero git maneja los archivos extraídos un poco incómodos).


Como se mencionó

git add -u

etapas los archivos eliminados para su eliminación, PERO TAMBIÉN los archivos modificados para la actualización.

Para dejar de grabar los archivos modificados, puede hacer

git reset HEAD <path>

si te gusta mantener tus commits organizados y limpios.
NOTA: Esto también podría borrar los archivos eliminados, así que ten cuidado con esos comodines.


Puede usar git add -u <filenames> para organizar los archivos eliminados solamente.

Por ejemplo, si eliminó las templates/*.tpl archivos templates/*.tpl , entonces use git add -u templates/*.tpl .

El -u es necesario para hacer referencia a archivos que existen en el repositorio pero que ya no existen en el directorio de trabajo. De lo contrario, el valor predeterminado de git add es buscar los archivos en el directorio de trabajo, y si especifica los archivos que ha eliminado allí, no los encontrará.


Si simplemente ejecuta:

git add -u

git actualizará su índice para saber que los archivos que ha eliminado deberían formar parte de la siguiente confirmación. Luego puede ejecutar "git commit" para verificar ese cambio.

O, si ejecuta:

git commit -a

Tomará automáticamente estos cambios (y cualquier otro) y los comprometerá.

Actualización : si solo desea agregar archivos eliminados, intente:

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


Lo siguiente funcionará, incluso si tiene que procesar muchos archivos:

git ls-files --deleted | xargs git rm

Probablemente también quieras comprometerte con un comentario.

Para más detalles, consulte: Guiones útiles de Git


algo como

git status | sed -s "s/^.*deleted: //" | xargs git rm

puede hacerlo


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

Esto eliminará todos los archivos eliminados que git ha rastreado anteriormente, y también manejará el caso en el que los nombres de los archivos tengan espacios.

Dependiendo de su variante POSIX, es posible que necesite usar xargs -0 -r : esto hará que xargs salga con gracia cuando contenga contenido nulo.

EDIT: --cached y --deleted flags se usan en tándem para proteger contra la eliminación accidental de archivos que no han sido eliminados.


Para el proyecto de estudio visual

''git ls-files --deleted | sed ''s/(.*)/"/1"/''| xargs git rm''

que es útil cuando la ruta del archivo eliminado tiene espacio


Agregar alias del sistema para organizar archivos eliminados como comando rm-all

alias rm-all=''git rm $(git ls-files --deleted)'' UNIX alias rm-all=''git rm $(git ls-files --deleted)''

WINDOWS doskey rm-all=bash -c "git rm $(git ls-files --deleted)"

Nota

Windows necesita tener bash instalado.


Para Git 1.x

$ git add -u

Esto le indica a git que realice automáticamente la etapa de los archivos rastreados, incluida la eliminación de los archivos rastreados anteriormente.

Para Git 2.0

Para escenificar tu árbol de trabajo completo:

$ git add -u :/

Para poner en escena solo la ruta actual:

$ git add -u .


git commit -m ''commit msg'' $(git ls-files --deleted)

Esto funcionó para mí después de que ya había eliminado los archivos.


git add -u

-u --update Solo coincide con archivos ya rastreados en el índice en lugar del árbol de trabajo. Esto significa que nunca creará nuevos archivos, sino que creará nuevos contenidos modificados de los archivos rastreados y eliminará los archivos del índice si se eliminaron los archivos correspondientes en el árbol de trabajo.

Si no se proporciona, por defecto es "."; en otras palabras, actualice todos los archivos rastreados en el directorio actual y sus subdirectorios.


Intentalo.

-a --all Tell the command to automatically stage files that have been modified and deleted, but new files you have not told Git about are not affected. git add . && git commit -m -a "Your commit"

o

git add --all && git commit -m "Your commit"


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

podría ser lo que estás buscando ... me funciona ...


Esa solución simple funciona bien para mí:

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


git rm test.txt

Antes o después de eliminar el archivo real.


Utilice -t para ver qué comando se está ejecutando realmente

Acabo de ajustar la respuesta de Virender para hacer lo mismo:

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


(Sin embargo, otra variación)

Quería eliminar todos los archivos ya eliminados de los discos, pero de una carpeta específica, dejando las otras carpetas intactas. Lo siguiente funcionó para mí:

git ls-files --deleted | grep <folder-name> | xargs git rm


Para organizar solo los archivos eliminados :

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

O (la forma xargs):

git status | awk ''/deleted/ {print $3}'' | xargs git rm

Puede alias su conjunto de comandos preferido para un uso posterior conveniente.


Si desea agregarlo a su .gitconfig haga esto:

[alias] rma = !git ls-files --deleted -z | xargs -0 git rm

Entonces, todo lo que tienes que hacer es ejecutar:

git rma