Montrant la structure de la branche Git
Est-il un moyen pour afficher uniquement la structure de branche dans Git? Il y a un certain nombre d'outils qui montrent les commits graphiquement, mais dans mon cas, la liste est tellement 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 commutateurs qui montrent seulement la ramification s'engage. Avec cette "--graph --branches --oneline-tous" pourrait faire l'affaire.
EDIT: je cherche un moyen de le faire à Ubuntu.
6 réponses
je ne suis pas sûr de ce que vous entendez par "structure de branche".
git log
peut aider à visualiser les branches faites à travers commits (voir ce blog post ):
[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"
mais si vous voulez seulement les différentes branches de tête, 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 column command
, et ici seulement pour commits depuis le dernier origin/master
commit)
Note: Jakub Narębski recommande l'ajout de l'option --simplify-by-decoration
, voir sa réponse .
peut-être que ce que vous voulez est --simplify-by-decoration
option, Voir git log documentation:
- simplifier-par-décoration
Commits qui sont visés par certaines branche ou une étiquette sont sélectionnés.
donc ce serait
git log --graph --simplify-by-decoration --all
ou à la suite VonC réponse
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
peut-être que je manque quelque chose, mais personne ne semble avoir mentionné gitk --all
encore.
la solution de base est:
git log --graph --all
Si vous voulez obtenir plus de fantaisie:
git log --graph --all --pretty=format:"%Cblue%h%Creset [%Cgreen%ar%Creset] %s%C(yellow)%d%Creset"
gitx si vous êtes sur un macOS
smartgit pour macOS ou Windows (mais je n'ai pas utilisé)
git-gui pour utiliser le natif git gui (cross-platform)
pour obtenir plus d'informations sur la façon dont une branche particulière se rapporte à d'autres branches dans votre dépôt et les télécommandes, vous pouvez utiliser git wtf
qui est un ajout sur le script de 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).