2012-02-24 13 views
57

tengo un alias de Git que se expande a:Git mostrar todas las ramas (pero no stashes) en el registro de

git log --graph --oneline --all --decorate 

Según man git log hay un par de opciones: --not sospechosas y --branches; pero no puedo hacer que funcione correctamente.

¿Cómo debo editar eso para ocultar los escondites?


FYI: según las accepted question y comment mis .gitconfig alias ahora se ve así:

[alias] 
    l = log --branches --remotes --tags --graph --oneline --decorate --notes HEAD 

Respuesta

79

En vez de hacer --all y luego tratar de filtrar los alijos, no siempre incluyen ellos en primer lugar:

git log --branches --remotes --tags --graph --oneline --decorate 

El principal problema que surge fr om tratando de filtrarlos después es que si el alijo es el último commit en esa rama (porque aunque no es el head de la rama, todavía es el descendiente más reciente), puede filtrar toda la rama desde el registro, que no es lo que quieres

+2

Genial! Agregaría '--tags' para completar. – cYrus

+0

Sospecho que '--tags' es redundante, ya que ninguna etiqueta debería ser un descendiente de la' cabeza 'de una rama o control remoto, aunque no he verificado esto. –

+3

Acabo de probar esto: 'git checkout -b test'; agregado un compromiso; 'git tag foo'; 'git checkout master'; 'git branch -D test'. La etiqueta está allí pero no se mostrará sin '--tags'. – cYrus

2

Tenga en cuenta que Andrew's answer no funcionaría para ocultar StGit1.) ramas <branch>.stgit (de StGit versión 0.15) lo que es inutilizable que de otra camada la salida.

Actualmente uso la siguiente solución:

$ git log --graph --oneline --decorate \ 
    $(git for-each-ref --format="%(refname)" refs/heads/ refs/remotes/ | 
    grep -v "\.stgit$") 

1.) StGit ("St acked Git") proporciona edredón/mq - funcionalidad como a Git (es decir, empujando/reventando parches hacia/desde una pila).

1

Mi alias:

[alias] 
    l = log --oneline --decorate --graph --exclude=refs/stash 

En este caso, usted será capaz de utilizar estas formas sin mostrar el alijo:

  • git l de la rama actual
  • git l feature234 para una rama específica
  • git l --all para la historia general

Del manual:

--exclude = < pegote patrón >

No incluya referencias a juego que la próxima --all, --branches, --tags, --remotes , o --glob de otra manera consideraría.

Cuestiones relacionadas