ver tipos tag remove modificados log etiquetas crear archivos git branch

tipos - git ver archivos modificados



En Git, lista los nombres de las ramas con confirmaciones no presionadas (2)

Dado un proyecto con varias sucursales locales, cada una de las cuales realiza el seguimiento de algunas sucursales remotas, ¿hay un comando que enumera todas las sucursales que tienen confirmaciones no presionadas? (Es decir, incluso si ninguna de esas sucursales está marcada).

No quiero ver los compromisos por sí mismos, ni quiero ver las sucursales que están actualizadas, solo quiero ver qué sucursales están por delante de sus controles remotos.

He intentado git log --branches --not --remotes --simplify-by-decoration --decorate --oneline , pero no parece mostrar lo que necesito. Ejecutarlo en mi repositorio actual no da salida, pero ejecutando el git status en mi rama actual muestra que Your branch is ahead of ''origin/branchname'' by 2 commits.

git for-each-ref --format="%(refname:short) %(push:track)" refs/heads y git branch -v muestran ramas actualizadas, así como las que necesitan push. Sin embargo, ambos muestran mi rama actual como [ahead 2] .

Otros comandos que he encontrado por ejemplo. git log @{u}.. , git cherry -v enumera las confirmaciones, no las ramas.

Pregunta: ¿por qué la salida del git log --branches --not --remotes --simplify-by-decoration --decorate --oneline no incluirá las ramas que git branch -v muestra como adelante? ¿No es el comando anterior solo el que las refs/heads no corresponden a un control remoto conocido; entonces, ¿una sucursal que figura como [ahead 2] cumple con este criterio?


La --no-walk para log parece hacer un mejor trabajo de lo que necesito que " --simplify-by-decoration . Mi comando completo es:

git log --branches --not --remotes --no-walk --decorate --oneline

... que he unpushed .


git for-each-ref --format="%(refname:short) %(push:track)" refs/heads

Esa sigue siendo la respuesta más precisa que puede analizar / grep fácilmente para obtener el resultado deseado (como eliminar sucursales actualizadas)

Puede hacerlo en un script de bash que llamará git-xxx (sin extensión), en algún lugar de su $PATH o %PATH% .
Luego se puede llamar a ese script con git xxx , y se usará git bash.
Eso es portátil y funcionará en todas las plataformas (es decir, incluso en Windows, donde <Git For Windows>/usr/bin incluye más de 200 comandos de linux ( grep , sed , awk , xargs , ...)