Domanda In Git, elenca i nomi delle filiali con commit non premuti


Dato un progetto con diversi rami locali, ognuno dei quali tiene traccia di qualche ramo remoto, c'è un comando che elenca tutti i rami che hanno commit non premuti? (Ovvero, anche se nessuno di questi rami è stato estratto.)

Non voglio vedere i commit stessi, né voglio vedere i rami aggiornati, voglio solo vedere quali rami sono più avanti dei loro telecomandi.

Ho provato git log --branches --not --remotes --simplify-by-decoration --decorate --oneline, ma non sembra mostrare ciò di cui ho bisogno. L'esecuzione sul mio repository corrente non dà output, ma in esecuzione git status sul mio attuale ramo spettacoli Your branch is ahead of 'origin/branchname' by 2 commits.

git for-each-ref --format="%(refname:short) %(push:track)" refs/heads e git branch -v entrambi mostrano i rami aggiornati e quelli che devono essere spinti. Tuttavia, loro fare entrambi mostrano il mio attuale ramo come [ahead 2].

Altri comandi che ho trovato ad es. git log @{u}.., git cherry -v elenca gli stessi commit, non i rami.

Domanda laterale: perché l'output di git log --branches --not --remotes --simplify-by-decoration --decorate --oneline non includere i rami git branch -v mostra come avanti? Non è il precedente comando a guardare a quale refs/heads non corrispondono a un remoto noto; quindi non sarebbe un ramo elencato come [ahead 2] soddisfare questi criteri?


19
2017-08-30 07:02


origine


risposte:


Il --no-walk opzione a log sembra fare un lavoro migliore di quello di cui ho bisogno --simplify-by-decoration. Il mio pieno comando è:

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

... che ho aliasto a unpushed.


12
2018-01-10 05:34



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

Rimane la risposta più precisa che puoi facilmente analizzare / grep per ottenere l'output desiderato (come rimuovere i rami aggiornati)

Puoi farlo con uno script bash che chiamerai git-xxx (senza estensione), da qualche parte nel tuo $PATH o %PATH%.
Questo script può quindi essere chiamato con git xxxe userà git bash.
È portatile e funzionerà su più piattaforme (vale a dire anche su Windows, dove <Git For Windows>/usr/bin include 200+ comandi di linux (grep, sed, awk, xargs, ...)


8
2017-08-31 08:04