2010-10-23 5 views
3

Обычно «git log» показывает все коммиты, вносящие вклад в текущую точку, даже те коммиты, которые пришли из ветвей, объединенных в текущую ветку.Можно ли увидеть только коммиты в определенной ветви в git?

Возможно ли выдать команду, чтобы видеть только коммиты в определенной ветви? То есть, если есть ветка интеграции, где все сливается непосредственно перед отправкой, есть ли какая-либо команда git, чтобы видеть только те коммиты в этой ветке?

ответ

6

Это (вы уже знаете) определяет набор коммитов достижимых из интеграции:

g log integration 

«^» операция может быть использована для всего НЕ достижимой с помощью этой фиксации (оборот). Например, все достижимы путем интеграции и исключает все также достижимой с помощью мастера:

g log ^master integration 

Распространенное стенографии для этого (интеграция, но не мастер):

g log master..integration 

Вы можете использовать несколько исключить спецификаторов (интеграции, но не ведущий или девелопмент):

g log ^master ^devel integration 

Надеюсь, что крышки достаточно, чтобы дать вам то, что вам нужно. Эта информация находится в man git-rev-parse в . УКАЗАТЬ ПЕРЕСМОТРЫ и УКАЗАТЬ ДИАПАЗОНЫ.

0

Я не совсем уверен. Идея ветки в git - это просто указатель на местоположение в дереве (а не полностью отдельная линия развития, например, в svn и т. Д.).

Вы можете, однако, сделать ветвь git --no-merged, чтобы увидеть, какие ветки необходимо интегрировать в текущий.

Я полагаю, что можно написать что-то, что даст вам все коммиты, которые есть только за текущим HEAD и нигде больше. Хотя я не уверен.

1

Это должно работать:

git checkout <branch> 
git diff master <commit just before the merge to master> 

Там должен быть способ для автоматизации получения имени коммита непосредственно перед слиянием овладевать, который позволит вам сделать это в макрос или псевдоним.

Также зарегистрируйтесь git log -p -m --first-parent, как указано в документах git help log; он может сделать что-то подобное достаточно.

+0

'-first-parent' почти наверняка то, что хочет OP. Это приведет к тому, что дерево ревизий будет следовать только за первым родителем коммитов. Когда вы объединяете 'topic' в' integration', объединение (объединенное в) из 'integration' является первым родителем, а (объединенное) commit из' topic' является вторым родителем. Предполагая, что вы были последовательны в том, каким образом вы сливаетесь, это должно указывать желаемые коммиты. (OP спрашивает о том, как видеть коммиты (множественное число), поэтому он 'log' не' diff' они хотят.) – Cascabel

Смежные вопросы