remove from commands cached all git git-status git-rm git-stage git-ls-files

from - Git: lista solo archivos "sin seguimiento"(también, comandos personalizados)



git rm all (9)

¿Hay alguna forma de usar un comando como git ls-files para mostrar solo archivos sin seguimiento?

La razón por la que pregunto es porque uso el siguiente comando para procesar todos los archivos eliminados:

git ls-files -d | xargs git rm

Me gustaría algo similar para los archivos sin seguimiento:

git some-command --some-options | xargs git add

Pude encontrar la opción -o para git ls-files , pero esto no es lo que quiero porque también muestra archivos ignorados. También pude encontrar el siguiente comando largo y feo:

git status --porcelain | grep ''^??'' | cut -c4- | xargs git add

Parece que tiene que haber un mejor comando que pueda usar aquí. Y si no lo hay, ¿cómo puedo crear comandos git personalizados?


Al buscar archivos para agregar potencialmente. La salida de git show hace eso pero también incluye muchas otras cosas. El siguiente comando es útil para obtener la misma lista de archivos pero sin todas las otras cosas.

git status --porcelain | grep "^?? " | sed -e ''s/^[?]* //''

Esto es útil cuando se combina en una tubería para encontrar archivos que coincidan con un patrón específico y luego canalizar eso para git add .

git status --porcelain | grep "^?? " | sed -e ''s/^[?]* //'' | / egrep "/.project$|/.settings$/.classfile$" | xargs -n1 git add


Creo que esto será lo mismo que pretendía el cartel original:

git add .


La respuesta aceptada se bloquea en los nombres de archivo con espacio. No puedo hacer comentarios al respecto (puntuación baja de hasta ahora), y en este momento no estoy seguro de cómo actualizar el comando de alias, así que pondré la versión mejorada aquí:

git ls-files -z -o --exclude-standard | xargs -0 git add


Para listar archivos sin seguimiento, intente:

git ls-files --others --exclude-standard

Buen alias para agregar archivos sin seguimiento:

au = !git add $(git ls-files -o --exclude-standard)

Edición: Para referencia: git-ls-files


Sé que es una pregunta antigua, pero en términos de listar archivos sin seguimiento, pensé que agregaría otra que también enumera las carpetas sin seguimiento:

Puede usar la operación git clean con -n (ejecución en seco) para mostrar qué archivos eliminará (incluidos los archivos .gitignore) de la siguiente manera:

git clean -xdn

Esto tiene la ventaja de mostrar todos los archivos y todas las carpetas que no se rastrean. Parámetros:

  • x : muestra todos los archivos sin seguimiento (incluidos los ignorados por git y otros, como la salida de compilación, etc.)
  • d - mostrar directorios sin seguimiento
  • n - y lo más importante! - Dryrun, es decir, en realidad no borra nada, solo use el mecanismo de limpieza para mostrar los resultados.

Si solo desea eliminar los archivos sin seguimiento, haga lo siguiente:

git clean -df

agrega x a eso si quieres incluir también archivos específicamente ignorados. Uso git clean -dfx mucho a lo largo del día.

Puedes crear un git personalizado simplemente escribiendo un script llamado git-whatever y teniéndolo en tu camino.


Todas las respuestas anteriores que verifiqué también listarían los archivos que se deben confirmar. Aquí hay una solución simple y fácil que solo lista los archivos que aún no están en el repositorio y no están sujetos a .gitignore .

git status --porcelain | awk ''/^/?/?/ { print $2; }''


Todo es muy simple

Para obtener una lista de todos los archivos no rastreados, use el comando git status con la opción -u (--untracked-files)

git status -u


git add -A -n hará lo que quieras. -A agrega todos los archivos no rastreados al repositorio, -n convierte en una dry-run donde no se realiza el agregado pero se da una salida de estado que enumera cada archivo que se habría agregado.