193 votes

Sortie de la branche git à la manière d'un arbre

En ce moment, quand je tape "git branch"

il liste mes branches dans un ordre arbitraire.

Ce que je préférerais serait si "git branch" listait ma sortie dans un arbre comme fasion, quelque chose comme:

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

Où ici, foo & bar étaient issus du maître; foo1 & foo2 ont été ramifiés de foo; bar4 était ramifié de bar.

Est-ce facile à accomplir?

[Utilitaires de ligne de commande uniquement. Cela doit s’inscrire dans mon flux de travail zsh / vim.]

250voto

VonC Points 414372

git show-branch --list se rapproche de ce que vous recherchez (avec le topo de commande)

--topo-order

Par défaut, les branches et leurs commits sont affichés dans l'ordre chronologique inverse.
Cette option fait apparaître dans l'ordre topologique (c'est à dire, en descendant les commits sont représentés devant leurs parents).

Mais l'outil git wtf peuvent aider trop. 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 branches:
{ } 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:

  • Comment votre branche se rapporte à la distance repo, si c'est un suivi de la branche.
  • Comment votre branche a trait à la non-fonctionnalité ("version") branches, si c'est une branche de fonctionnalité.
  • Comment votre branche concerne les branches, si c'est une version de la branche

158voto

nocash Points 996

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

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

fait un assez bon travail. Il montre les balises et les branches distantes. Cela peut ne pas être souhaitable pour tout le monde, mais je trouve ça utile. --simplifiy-by-decoration , c'est le gros truc ici pour limiter les refs montré.

J'utilise une commande similaire à la vue de mon journal. J'ai été en mesure de remplacer complètement mon gitk d'utilisation:

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

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

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

Edit: mise à Jour suggéré de commande du journal/aliases pour utiliser des options les plus simples drapeaux.

12voto

Ben Points 11

L'exemple suivant montre également les parents engagés

git log --graph --all --format = '% C (atténuation cyan)% p% Cred% h% C (atténuation blanche)% s% Cgreen (% cr)% C (atténuation cyan) <% et>% C (jaune vif)% d% Creset '

10voto

Vladimir Prudnikov Points 2106

Vous pouvez utiliser un outil appelé gitk .

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