modificados - ignorar cambios git
EliminaciĆ³n de varios archivos de un repositorio de Git que ya se han eliminado del disco (28)
Para Git 1.x
$ git add -u
Esto le dice a git que escalone automáticamente los archivos rastreados, incluida la eliminación de los archivos rastreados anteriormente.
Para Git 2.0
Para poner en escena todo tu árbol de trabajo:
$ git add -u :/
Para escenificar solo el camino actual:
$ git add -u .
Tengo un repositorio de Git del que he eliminado cuatro archivos usando rm
( no git rm
), y mi estado de Git se ve 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 .
lo hace, si eso es posible.
(Otra variación más)
Quería eliminar todo lo que ya se había eliminado de los archivos de disco, pero de una carpeta específica, dejando las otras carpetas intactas. Lo siguiente me funcionó:
git ls-files --deleted | grep <folder-name> | xargs git rm
Adición de alias de sistema para almacenar archivos eliminados como comando rm-all
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 instalado bash
.
Al usar git-add con las opciones ''--all'' o ''--update'' puede obtener más de lo que desea. Los archivos nuevos y / o modificados también se agregarán al índice. Tengo una configuración de alias de bash para cuando quiero eliminar archivos borrados 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 eliminado.
Como se mencionó
git add -u
escalona los archivos eliminados para eliminarlos, PERO TAMBIÉN modificó los archivos para actualizarlos.
Para desmarcar los archivos modificados puedes hacerlo.
git reset HEAD <path>
Si te gusta mantener tus compromisos organizados y limpios.
NOTA: Esto también podría desestabilizar los archivos eliminados, así que tenga cuidado con esos comodines.
Esa solución simple funciona bien para mí:
git rm $(git ls-files --deleted)
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"
La solución más flexible que he encontrado hasta la fecha es
git cola
Y selecciona todos los archivos borrados que quiero poner en escena.
(Tenga en cuenta que normalmente hago todo lo necesario en git, pero git maneja los archivos eliminados un poco incómodo).
Lo siguiente funcionará, incluso si tiene muchos archivos para procesar:
git ls-files --deleted | xargs git rm
Probablemente también querrás comprometerte con un comentario.
Para más detalles, consulte: Scripts Git útiles
Necesitaba el mismo y usé el botón git gui "escenario cambiado". También agrega todo.
Y después de "cambiado de etapa" hice "commit" ...
Así que mi directorio de trabajo está limpio de nuevo.
Ninguna de las banderas para git-add solo ejecutará 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 la salida.
Trabajando con la respuesta de Jeremy, esto es lo que obtuve:
git status | sed -s "s/^.*deleted: //" | grep "/(/#/|commit/)" -v | xargs git rm
- Obtener el estado de los archivos.
- Para los archivos eliminados, aísle el nombre del archivo.
- Elimine todas las líneas que comiencen con #s, así como una línea de estado que tenía la palabra "eliminada"; No recuerdo qué era exactamente, y ya no está allí, así que es posible que tengas que modificarlo para diferentes situaciones. Creo que la agrupación de expresiones podría ser una característica específica de GNU, por lo que si no estás utilizando gnutils, es posible que tengas que agregar varias líneas
grep -v
. - Pasa los archivos a
git rm
.
Pegando esto en un alias de shell ahora ...
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 mostrará el nuevo contenido modificado de los archivos rastreados.
git rm $(git ls-files --deleted)
... por otra parte, solo se reproducirán los archivos eliminados que se rastrearon.
Así que lo último en mi opinión es la mejor opción.
Para escenificar solo los archivos borrados :
for x in $(git status | grep deleted | awk ''{print $2}''); do git rm $x; done
O (a la manera de xargs):
git status | awk ''/deleted/ {print $2}'' | xargs git rm
Puede alias su conjunto de comandos preferido para un uso posterior conveniente.
Para 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
Probablemente estés buscando -A:
git add -A
Esto es similar a git add -u, pero también agrega nuevos archivos. Esto es aproximadamente el equivalente del comando addremove
de hg (aunque la detección de movimientos es automática).
Puede usar git add -u <filenames>
para organizar los archivos eliminados solamente.
Por ejemplo, si eliminó los archivos templates/*.tpl
, use git add -u templates/*.tpl
.
Se requiere -u
para hacer referencia a los 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 eliminó allí, no los encontrará.
Puedes usar
git add -u
Para agregar los archivos eliminados al área de preparación, confírmelos
git commit -m "Deleted files manually"
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 correr:
git rma
Si esos son los únicos cambios, simplemente puede hacer
git commit -a
para cometer todos los cambios. Eso incluirá archivos borrados.
Si simplemente ejecuta:
git add -u
git actualizará su índice para saber que los archivos que ha eliminado deben ser parte del próximo compromiso. Luego puedes ejecutar "git commit" para registrar ese cambio.
O, si corres:
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
Utilice -t
para ver qué comando se está ejecutando
Acabo de ajustar la respuesta de Virender para hacer lo mismo:
git ls-files --deleted -z | xargs -t -0 git rm
algo como
git status | sed -s "s/^.*deleted: //" | xargs git rm
puede hacerlo
git add -u
-u --update Solo coincide con los archivos ya rastreados en el índice en lugar del árbol de trabajo. Esto significa que nunca se crearán nuevos archivos, sino que se modificarán los contenidos nuevos modificados de los archivos rastreados y que se eliminarán los archivos del índice si se eliminaron los archivos correspondientes en el árbol de trabajo.
Si no se da, por defecto "."; en otras palabras, actualice todos los archivos rastreados en el directorio actual y sus subdirectorios.
git commit -m ''commit msg'' $(git ls-files --deleted)
Esto funcionó para mí después de que ya había eliminado los archivos.
git ls-files --deleted -z | xargs -0 git rm
puede ser lo que buscas ... funciona para mí ..
git ls-files --deleted -z | xargs -0 git rm --cached
Esto eliminará todos los archivos eliminados que fueron rastreados anteriormente por git, así como también manejará el caso donde sus nombres de archivo tienen espacios en ellos.
Dependiendo de su variante POSIX, es posible que necesite usar xargs -0 -r
: esto hará que xargs
salga correctamente cuando se canaliza contenido nulo.
EDITAR: los --cached
y --deleted
se utilizan en tándem para evitar la eliminación accidental de archivos que aún no se han eliminado.
git ls-files --deleted | xargs git rm
Es la mejor opción para agregar solo archivos borrados.
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.
git rm test.txt
Antes o después de eliminar el archivo real.