37 votes

Afficher la structure des branches de Git

Existe-t-il un moyen d'afficher uniquement la structure des branches dans Git ? Il existe un certain nombre d'outils qui affichent les commits graphiquement, mais dans mon cas, la liste est si longue qu'il est impossible de voir la structure. Je suppose que git-log pourrait être la réponse, mais je ne trouve pas de commutateur qui ne montre que les commits de la branche. Ceci avec "--graph --branches --oneline --all" pourrait faire l'affaire.

EDIT : Je cherche un moyen de faire cela dans Ubuntu.

1 votes

Duplicata possible de De jolis graphiques de branches git

0 votes

Voici une liste d'entre eux provenant du site officiel de Git et une liste d'entre eux tirée de Wikipedia qui pourraient vous aider. Je vous suggère d'utiliser GitKraken pour obtenir de telles images. !GitKraken ]( i.stack.imgur.com/vNp6k.png )

39voto

VonC Points 414372

Je ne suis pas sûr de ce que vous entendez par "structure de la branche".
git log peut aider à visualiser les branches créées à travers les commits (Voir cette article de blog ):

[alias]
    lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative

git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative"

alt text

Mais si vous voulez seulement les différentes branches de HEAD, vous pouvez essayer quelque chose du genre :

heads = !"git log origin/master.. --format='%Cred%h%Creset;%C(yellow)%an%Creset;%H;%Cblue%f%Creset' | git name-rev --stdin --always --name-only | column -t -s';'"

(en utilisant le column command et ici, uniquement pour les modifications effectuées depuis le dernier origin/master commettre)

Note : Jakub Narebski recommande d'ajouter l'option --simplify-by-decoration voir sa réponse .

0 votes

C'était assez proche (la dernière solution), j'ai juste dû ajouter la date et --branch à la commande. Sinon, elle ne montre que la branche actuelle. Bien que cela ne laisse toujours pas de commits qui ne sont pas la tête. Ce que je voulais dire par "structure de branche" est un moyen de voir à partir de quelle branche chaque branche est créée, mais avec cette commande je peux faire défiler la liste (qui a environ 350 commits) pour voir ce qui s'est passé.

0 votes

@Makis : si vous avez une commande finale, vous pouvez la poster comme réponse : Je suis intéressé (et je voterai pour). Ensuite, vous pouvez même accepter votre propre réponse comme étant la réponse officielle si vous le souhaitez.

0 votes

Je continue à étudier la question, je retourne au bureau demain pour essayer de donner un sens à la structure. Le repo a été créé avec svn2git et je ne suis pas sûr à 100% que le repo svn ait été fait selon les règles.

34voto

Jakub Narębski Points 87537

Peut-être que ce que vous voulez est --simplify-by-decoration l'option, voir journal git documentation :

--simplifier-par-décoration

     Les commits qui sont référencés par une branche ou une étiquette sont sélectionnés.

Donc ce serait

git log --graph --simplify-by-decoration --all

ou suivant Réponse de VonC

git log --graph --simplify-by-decoration \
   --pretty=format:'%Cred%h%Creset-%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' \
   --abbrev-commit --date=relative

0 votes

Excellent, j'avais manqué cette option particulière. +1

0 votes

@VonC : Cette option est assez nouvelle ; elle est apparue dans la version 1.6.1 de git.

0 votes

1.6.1 ? git.kernel.org/?p=git/git.git;a=tags : Jeu, 25 Déc 2008, cela me semble une éternité ;)

9voto

Benjol Points 16334

Peut-être que je manque quelque chose, mais personne ne semble avoir mentionné gitk --all encore.

4 votes

Je viens d'essayer gitk --all --simplify-by-decoration et cela fonctionne très bien. (C'était avec le gitk fourni avec git 1.7.9.5)

3voto

PurplePilot Points 4039

gitx si vous êtes sur un macOS

smartgit pour macOS ou Windows (mais je ne l'ai pas utilisé)

git-gui pour utiliser le gui natif de git (multiplateforme)

0 votes

Désolé, j'ai oublié de préciser que j'utilise Ubuntu.

0 votes

Git-gui (vous voulez dire gitk, n'est-ce pas ?) ne fonctionne pas pour moi - 1. il ne montre que les branches que vous vérifiez, je veux l'arbre entier. 2. Il montre tous les commits, je ne suis intéressé que par la structure des branches.

0 votes

@ripper234 vous pouvez utiliser gitk -a pour montrer toutes les branches

2voto

Emil Sit Points 11326

Pour obtenir plus d'informations sur la façon dont une branche particulière est liée à d'autres branches dans votre référentiel et vos remotes, vous pouvez utiliser git wtf qui est un add on script par William Morgan : http://git-wt-commit.rubyforge.org/

Il produit des informations sommaires comme :

$ git wtf
Local branch: master
[x] in sync with remote
Remote branch: origin/master (git@gitorious.org:willgit/mainline.git)
[x] in sync with local

Feature branches:
{ } origin/experimental is NOT merged in (1 commit ahead)
    - some tweaks i'm playing around with [80e5da1]
{ } origin/dont-assume-origin is NOT merged in (1 commit ahead)
    - guess primary remote repo from git config instead of assuming "origin" [23c96f1]

(exemple tiré de l'URL ci-dessus).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X