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.
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
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
mise à jour récente .Réponses:
Essayez l'option décorer.
Il annote les commits pointés par des balises ou des branches.
la source
--pretty
vous pouvez utiliser%d
où vous voulez les «décorations».git log --graph --all --oneline --decorate
. J'ai un aliasgit graph
qui utilise--pretty
(afin d'afficher également d'autres choses, comme l'auteur et la date), mais%d
il 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--pretty
la%d
chaîne hériter des couleurs de--decorate
?--pretty
formats, ajoutez%C(auto)
avant l'élément ce qui doit être coloré. par exemplegit log --pretty=format:"%cd %h %cn %s %C(auto)%d"
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
blackbox
chiffrement, où un référentiel et ses branches / balises peuvent devenir indisponibles pour leadmins
moment où suffisamment d'utilisateurs quittent un projet et que lekeyrings
répertoire n'a pas été religieusement basé hors du maître)J'ai trouvé que la réponse ci-dessous était utile lorsque le
keyrings
répertoire n'était pas mis à jour à partir du maître ...Fondamentalement,
--source
j'ai ajouté ce dont j'avais besoin pour afficher les branches / balises. L'ajout--name-only
indiquera également quel fichier a été réellement modifié.Une autre réponse utile: comment afficher le journal git avec le nom de la branche
la source
--source
seul donneHEAD
pour 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 dansmaster
, au lieu d'obtenirrefs/heads/master
, j'obtiens une branche privée (refs/remotes/origin/…
). Je soupçonne que les fusions et / ou les nouvelles branches fontGit
perdre des informations d'historique.--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.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 --decorate
commande, qui est disponible commeglgga
alias dans oh-my-zsh.Personnellement, je préfère l'
glods
alias qui se traduit par:la source