Comment puis-je afficher le nom des branches dans `git log`?


216

Comment puis-je afficher le nom des branches dans la sortie de git log?

Par exemple avec, git log --graph --all j'obtiens une belle vue d'ensemble des commits, mais je me demande quelle ligne est master, et quelle est ma branche par exemple.


1
Manifestement, l'affichage des noms des têtes ou des balises liées semble déjà être fait par défaut depuis une gitmise à jour récente .
underscore_d

Réponses:


321

Essayez l'option décorer.

git log --graph --all --decorate

Il annote les commits pointés par des balises ou des branches.


42
Avec --prettyvous pouvez utiliser %doù vous voulez les «décorations».
CB Bailey

4
@noli: Qu'attendez-vous qu'il montre? Tous les commits ne sont pas des conseils de branche.
CB Bailey

9
@noli git stocke uniquement le nom de la branche lors de la validation la plus récente de la branche (le conseil). Tous les commits de l'histoire sont égaux et anonymes. Si vous voulez des branches nommées pour que chaque commit porte le nom de la branche, vous pouvez utiliser Mercurial.
Sampo Smolander

7
@CharlesBailey: J'aime les couleurs des refs avec git log --graph --all --oneline --decorate. J'ai un alias git graphqui utilise --pretty(afin d'afficher également d'autres choses, comme l'auteur et la date), mais %dil ne me donne pas les couleurs de --decorate. J'utilise le jaune pour toutes mes références pour l'instant, savez-vous comment je peux laisser --prettyla %dchaîne hériter des couleurs de --decorate?
Gauthier

3
@Gauthier Si vous aimez avoir des couleurs par défaut dans vos --prettyformats, ajoutez %C(auto)avant l'élément ce qui doit être coloré. par exemplegit log --pretty=format:"%cd %h %cn %s %C(auto)%d"
Radon8472

7

Je cherchais quelque chose de similaire - mais je voulais savoir dans quelle branche un changement avait été effectué. Espérons que cette réponse sera également utile aux autres.

J'étudie un risque avec le blackboxchiffrement, où un référentiel et ses branches / balises peuvent devenir indisponibles pour le adminsmoment où suffisamment d'utilisateurs quittent un projet et que le keyringsrépertoire n'a pas été religieusement basé hors du maître)

J'ai trouvé que la réponse ci-dessous était utile lorsque le keyringsrépertoire n'était pas mis à jour à partir du maître ...

Fondamentalement, --sourcej'ai ajouté ce dont j'avais besoin pour afficher les branches / balises. L'ajout --name-onlyindiquera également quel fichier a été réellement modifié.

cd /path/to/repo-that-uses-blackbox-encryption
git log --graph --all --decorate --source --name-only keyrings

Une autre réponse utile: comment afficher le journal git avec le nom de la branche


Pour moi, --sourceseul donne HEADpour tous les commits. En combinaison avec --all, cela semble faire la distinction entre différentes branches, mais les informations affichées ne correspondent pas à ce que j'attends: pour les validations que j'ai faites dans master, au lieu d'obtenir refs/heads/master, j'obtiens une branche privée ( refs/remotes/origin/…). Je soupçonne que les fusions et / ou les nouvelles branches font Gitperdre des informations d'historique.
vinc17

Au lieu de --all, je peux filtrer sur les branches avec --branches --remotes=<pattern>, mais dès que deux branches sont fusionnées, Git n'a plus les informations sur lesquelles on avait le commit quand cela a été fait.
vinc17

1

Si vous utilisez oh-my-zsh comme terminal, un tas d'alias git sont disponibles. Tout cela peut être vu sur leur repo oh-my-zsh / plugins / git . Si vous n'utilisez pas ce terminal, vous pouvez simplement récupérer les alias et coller ceux que vous aimez dans votre propre environnement.

La réponse acceptée présente la git log --graph --all --decoratecommande, qui est disponible comme glggaalias dans oh-my-zsh.

Personnellement, je préfère l' glodsalias qui se traduit par:

git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset' --date=short
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.