Как узнать, к какой ветке относится коммит "git log"? - PullRequest
39 голосов
/ 20 августа 2011

Если я сделаю git log, есть ли какой-нибудь параметр, который я мог бы указать, чтобы можно было по выходным данным определить, к какой ветви относится каждый коммит?

Редактировать: чтобы уточнить, я понимаю, что коммит может быть частью двух ветвей (например). Я хочу получить самую последнюю ветку, которой принадлежит коммит в log. Итак, если бы я сделал ветку с именем foo из master. Это будет принадлежать обеим веткам, но я хочу получить foo.

Ответы [ 3 ]

58 голосов
/ 20 августа 2011

Я думаю, что вам нужна очень полезная команда:

git branch -a --contains <SHA1sum-of-commit>

... которая сообщит вам каждую ветвь (как локальную, так и удаленную), содержащую этот коммит.

К сожалению, я не думаю, что есть опция git log, которая просто выводит это для каждого коммита.Использование --all --source близко, но будет отображать только одну ветвей для каждого коммита.Однако, если вы нажмете на коммит в gitk --all, вы увидите, что в нем перечислены все ветви, в которых находится этот коммит.

Однако есть одна часть вашего вопроса, которая не очень хорошо определена -Вы спрашиваете:

Я хочу получить самую последнюю ветку, к которой относится коммит в журнале

Мне не совсем понятно, что вы подразумеваете под этим- «самая последняя ветвь» может быть (а) самой последней созданной ссылкой (б) самой последней измененной ссылкой (в) веткой с самой последней фиксацией и т. д. и т. д. и т. д. Вероятно, есть лучший способ определить, чтовы хотите с точки зрения графика фиксации.

23 голосов
/ 20 августа 2011

С git log вы уже получаете все коммиты из текущей ветки, в которой находитесь.

Если вы хотите видеть коммиты из объединенных веток, вы можете использовать

$ git log --pretty=oneline --graph

Чтобы создать дерево журналов и посмотреть, из каких объединенных ветвей происходит коммит.

--graph создаст дерево коммитов и --pretty=oneline сделает визуализацию в одну строку для каждого коммита

Чтобы добавить ветки (как ссылки) в журнал:

$ git log --all --source --pretty=oneline --graph

Для отображения веток с коммитами:

$ git show-branch
8 голосов
/ 20 августа 2011

Вы пробовали опцию "--decorate" для git log?

У меня есть этот псевдоним в моем .gitconfig:

[alias]
        k = log --graph --oneline --abbrev-commit  --decorate

На нем показан график, аналогичный показанному gitk, с именами «украшенных» веток, кроме самого последнего коммита в ветке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...