Sortie de la twig git en mode arbre

En ce moment, quand je tape “git branch”

il liste mes twigs dans un ordre arbitraire.

Ce que je préférerais serait que si “git branch” listait mes sorties dans un arbre comme fasion, quelque chose comme:

master |-- foo |-- foo1 |-- foo2 |-- bar |-- bar4 

Où ici, foo & bar ont été ramifiés de maître; foo1 & foo2 étaient branchés à partir de foo; bar4 était ramifié à partir de la barre.

Est-ce facile à accomplir?

[Utilitaires en ligne de commande uniquement. Cela doit tenir dans mon stream de travail zsh / vim.]

La réponse ci-dessous utilise git log :

J’ai mentionné une approche similaire en 2009 avec ” Impossible d’afficher un arbre Git dans le terminal “:

 git log --graph --pretty=oneline --abbrev-commit 

Mais celui que j’ai utilisé est dans ” Comment afficher le nom de la balise et le nom de la twig en utilisant git log –graph ” (2011):

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

Réponse originale (2010)

git show-branch --list est proche de ce que vous cherchez (avec l’ordre topo)

 --topo-order 

Par défaut, les twigs et leurs commits sont affichés dans l’ordre chronologique inverse.
Cette option les fait apparaître dans l’ordre topologique (c’est-à-dire que les commits descendants sont affichés avant leurs parents).

Mais l’outil git wtf peut aussi vous aider . Exemple:

 $ git wtf Local branch: master [ ] NOT in sync with remote (needs push) - Add before-search hook, for shortcuts for custom search queries. [4430d1b] (edwardzyang@...; 7 days ago) Remote branch: origin/master (git@gitorious.org:sup/mainline.git) [x] in sync with local Feature twigs: { } origin/release-0.8.1 is NOT merged in (1 commit ahead) - bump to 0.8.1 [dab43fb] (wmorgan-sup@...; 2 days ago) [ ] labels-before-subj is NOT merged in (1 commit ahead) - put labels before subject in thread index view [790b64d] (marka@...; 4 weeks ago) {x} origin/enclosed-message-display-tweaks merged in (x) experiment merged in (only locally) NOTE: working directory contains modified files 

git-wtf vous montre:

  • La relation entre votre twig et le référentiel distant, s’il s’agit d’une twig de suivi.
  • Quel est le lien entre votre twig et les twigs non-fonctionnalité (“version”), si c’est une twig de fonctionnalité.
  • Quel est le lien entre votre twig et les twigs, si c’est une twig de version?

Ce n’est pas tout à fait ce que vous avez demandé, mais

 git log --graph --simplify-by-decoration --pretty=format:'%d' --all 

fait un bon travail Il affiche également les tags et les twigs distantes. Cela peut ne pas être souhaitable pour tout le monde, mais je le trouve utile. --simplifiy-by-decoration est le gros tour pour limiter les références montrées.

J’utilise une commande similaire pour afficher mon journal. J’ai pu remplacer complètement mon utilisation de gitk avec:

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

Je l’utilise en incluant ces alias dans mon fichier ~ / .gitconfig:

 [alias] l = log --graph --oneline --decorate ll = log --graph --oneline --decorate --twigs --tags lll = log --graph --oneline --decorate --all 

Edit: Mise à jour de la commande / des alias de journal suggérés pour utiliser des options plus simples.

Vous pouvez utiliser un outil appelé gitk .

L’exemple suivant montre également que les parents s’engagent:

 git log --graph --all \ --format='%C(cyan dim) %p %Cred %h %C(white dim) %s %Cgreen(%cr)%C(cyan dim) < %an>%C(bold yellow)%d%Creset'