Отображение структуры ветки Git - PullRequest
34 голосов
/ 08 сентября 2010

Есть ли способ показать только структуру ветвей в Git?Существует ряд инструментов, которые графически показывают коммиты, но в моем случае список настолько длинный, что невозможно увидеть структуру.Я думаю, что git-log мог бы быть ответом, но я не могу найти никаких переключателей, которые только показывают коммиты ветвления.Это вместе с "--graph --branches --oneline --all" может помочь.

РЕДАКТИРОВАТЬ: Я ищу способ сделать это в Ubuntu.

Ответы [ 6 ]

31 голосов
/ 08 сентября 2010

Я не уверен, что вы подразумеваете под "структурой ветвей".
git log может помочь визуализировать ветви, сделанные с помощью коммитов (см. сообщение в блоге ):

[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

Но если вам нужны только разные ветки HEAD, вы можете попробовать что-то вроде :

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';'"

(используется column command, и здесь только для коммитов с момента последнего origin/master коммита)

Примечание: Якуб Наребски рекомендует добавить опцию --simplify-by-decoration, см. его ответ .

27 голосов
/ 10 сентября 2010

Возможно, вам нужна опция --simplify-by-decoration, см. git log документация:

- упрощение по оформлению

Выбраны коммиты, на которые ссылаются некоторые ветви или теги.

Таким образом, это будет

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

или следующий 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
9 голосов
/ 29 ноября 2010

Может быть, я что-то упускаю, но никто, кажется, еще не упомянул gitk --all.

6 голосов
/ 09 сентября 2010

Основное решение:

git log --graph --all

Если вы хотите получить больше фантазии:

git log --graph --all --pretty=format:"%Cblue%h%Creset [%Cgreen%ar%Creset] %s%C(yellow)%d%Creset"
3 голосов
/ 08 сентября 2010

gitx , если вы используете MacOS

smartgit для macOS или Windows (но я не использовал его)

git-gui для использования родного git gui (кроссплатформенного)

1 голос
/ 08 сентября 2010

Чтобы получить больше информации о том, как конкретная ветка связана с другими ветвями в вашем хранилище и удаленных устройствах, вы можете использовать git wtf, который является надстройкой сценария Уильяма Моргана: http://git -wt-commit.rubyforge.org /

Создает сводную информацию, такую ​​как:

$ 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]

(пример взят из приведенного выше URL).

...