¿Alias ​​para commits sin apresurar, sin importar en qué twig estoy?

Tengo un git alias que se ve así:

[alias] unpushed = log origin..HEAD --pretty=format:'%h %an %s' 

Lo cual funciona muy bien para mostrar los cambios "sin astackr" cuando estoy en maestro. Pero este alias realmente no funciona bien cuando estoy en una sucursal.

¿Cuál sería el command correcto para mostrar los cambios no realizados ya sea que esté o no en una sucursal?

Si solo desea ver las confirmaciones salientes de la sucursal actual, puede usar lo siguiente:

 git config alias.unpushed "log @{u}.. --pretty=format:'%h %an %s'" 

Esto hace que git log muestre todos los commits accesibles desde HEAD excluyendo aquellos accesibles desde la twig upstream. El argumento @{u}.. es equivalente a @{u}..HEAD , y @{u} es la abreviatura de la confirmación ascendente de la bifurcación actual (por ejemplo, origin/foo si la bifurcación desprotegida es foo ).

Si desea ver todas las asignaciones sin apresurar de todas las twigs, haga esto:

 git config alias.unpushed "log --all --not --remotes --tags --pretty=format:'%h %an %s'" 

Lo anterior hace que git log recorra todas las references, pero se detenga en (excluya) references remotas (p. Ej., origin/master ) y tags. Git no distingue entre tags locales y remotas, por lo que lo anterior supone que todas las tags son remotas (esto no siempre es cierto, por lo que es posible que desee omitir el argumento --tags veces).

Yo personalmente uso los siguientes alias para mostrar commits sin apresurar:

 # unpushed: graph of everything excluding pushed/tag commits # with boundary commits (see below for 'git g' alias) git config alias.unpushed '!git g --not --remotes --tags' # go: _G_raph of _O_utgoing commits with boundary commits # (see below for 'git gb' alias) git config alias.go '!git gb @{u}..' # g: _G_raph of everything with boundary commits git config alias.g '!git gb --all' # gb: _G_raph of current _B_ranch (or arguments) with boundary commits git config alias.gb '!git gbnb --boundary' # gbnb: _G_raph of current _B_ranch (or arguments) with _N_o _B_oundary commits git config alias.gbnb 'log --graph --date-order --pretty=tformat:"%C(yellow)%h%Creset %C(magenta)%aE %ai%Creset %C(green bold)%d%Creset%n %s"' 

Para repositorys simples utilizo git g alias como mi método principal para explorar los commits. Para repositorys complejos (docenas de twigs), generalmente uso git gb para mostrar twigs específicas o ranges de commits. Cuando quiero ver cómo git push cambiará la reference remota (mi push.default está configurado como upstream ), uso git go . Cuando quiero ver si hay algo en algún lugar de mi repository local que no haya presionado (por ejemplo, para ver si perderé trabajo si git unpushed el clon), uso git unpushed .

Yo uso git-wtf para esta y otras preguntas.

Esto lo hará:

 git config alias.unpushed "log $(git rev-parse --symbolic-full-name @{u})..HEAD --pretty=format:'%h %an %s'" 

Compara el nombre completo de la twig de seguimiento ascendente (por ejemplo, refs/remotes/origin/master ) con HEAD. El nombre completo es un refspec válido para su operación de git promedio.

Si usa fetch lugar de pull , y quiere commits en cualquier twig pero no en ambas, use ... syntax en lugar de .. syntax en el command.