web-dev-qa-db-fra.com

Affichage de la structure de la branche Git

Existe-t-il un moyen d'afficher uniquement la structure de branche dans Git? Il existe un certain nombre d'outils qui affichent graphiquement les validations, 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 aucun commutateur qui affiche uniquement les validations de branchement. Ceci avec "--graph --branches --oneline --all" pourrait faire l'affaire.

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

34
Makis

Je ne suis pas sûr de ce que vous entendez par "structure de branche".
git log peut aider à visualiser les branches créées grâce aux commits (voir ceci 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 ne voulez que les différentes branches HEAD, vous pouvez essayer quelque chose dans le sens de :

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 validations depuis le dernier Origin/master commit)

Remarque: Jakub Narębski recommande d'ajouter l'option --simplify-by-decoration, voir sa réponse .

34
VonC

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

- simplifier par décoration

Les validations référencées par une branche ou une balise sont sélectionnées.

Ce serait donc

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

ou suivant réponse 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
29
Jakub Narębski

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

9
Benjol

La solution de base est:

git log --graph --all

Si vous voulez devenir plus chic:

git log --graph --all --pretty=format:"%Cblue%h%Creset [%Cgreen%ar%Creset] %s%C(yellow)%d%Creset"
6
cmcginty

gitx si vous êtes sur macOS

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

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

3
PurplePilot

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

Il produit des informations résumées comme:

$ git wtf
Local branch: master
[x] in sync with remote
Remote branch: Origin/master ([email protected]: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).

2
Emil Sit