Enumera los repositorys de git con cambios no utilizados

Estoy reinstalando mi sistema operativo. Tengo miles de repositorys en mi computadora. Tengo la sensación de que realicé algunos cambios en algunos repositorys durante la piratería informática que no están comprometidos y / o presionados.

Desde un bash shell en mi PC Debian, ¿cuál es la mejor manera de encontrar una list de cambios que aún no se han confirmado / enviado a sus controles remotos, y decidir si quiero mantener los cambios?

Supongo que encontrar cada repository y ejecutar el git status en cada informe es suficiente para sus necesidades. En cuyo caso, lo siguiente podría ser un punto de partida para usted:

 find / -name "*.git" -type d -print0 | xargs -0 -L 1 -i% bash -c "cd %/..; pwd; git status -s -uno" 

find atraviesa su sistema de files, comenzando en / (es posible que desee restringirlo a quizás ~ ), buscando los directores de .git. La salida (delimitada por nulos para manejar nombres de file divertidos) se canaliza a xargs, que cd a cada repository, imprime el pwd y corta el estado de git, sin enumerar los files sin seguir.

La respuesta anterior encuentra commits no comprometidos, pero no sin compromiso.

Esto encontrará ambos:

find / -name "*.git" -type d -print0 | xargs -0 -L 1 -i% bash -c "cd %/..; pwd; git status -s -uno; git cherry -v 2>/dev/null"

git cherry muestra el SHA1 de cambios no utilizados; -v agrega el comentario de compromiso; y la networkingirección de errores suprime la salida ruidosa de los repos que carecen de un flujo ascendente.

Puede que le guste el proyecto multi-git-status de Ferry Boender.

https://github.com/fboender/multi-git-status .
"Mostrar cambios sin restricciones, sin seguimiento y sin cambios en múltiples repositorys de Git".

enter image description here