La pregunta del OP tiene más de 9 años. No sé lo que man git-statusdijo entonces, pero esto es lo que dice ahora:
--porcelain[=<version>]
Give the output in an easy-to-parse format for scripts. This is similar to the
short output, but will remain stable across Git versions and regardless of user
configuration. See below for details.
The version parameter is used to specify the format version. This is optional and
defaults to the original version v1 format.
Esto sugiere que el --porcelainargumento es muy adecuado para probar el estado de un repositorio de cambios.
Wrt la pregunta del OP, "¿Hay algún tipo de verificación booleana si ha habido cambios desde la última confirmación, o cómo puedo realmente probar si hay nuevos cambios en mi repositorio local?"
No creo que bashtenga tipos de datos booleanos per se , pero esto puede estar lo suficientemente cerca:
[ -z "`git status --porcelain`" ] && echo "NULL-NO DIFFS" || echo "DIFFS EXIST"
Esto se puede volver a emitir como un if-then-elseformulario para una secuencia de comandos, o ejecutar como está desde la CLI mientras está en la carpeta git repo . De lo contrario, use la -Copción con una especificación de ruta al repositorio de interés:
git -C ~/path/to/MyGitRepo status --porcelain
Apéndice:
- Algunos aconsejan usar la
-u, --untracked-fileopción para evitar informar el estado de los archivos que uno desea ignorar. Tenga en cuenta que esto tiene un efecto secundario desafortunado : los archivos que se agregan recientemente tampoco tienen estado. La opción es útil en algunas situaciones , pero considérela cuidadosamente antes de usarla.
git status?