Я хочу перечислить все коммиты, которые являются только частью определенной ветки.
При следующем перечислении всех коммитов из ветки, а также из родительского (основного)
git log mybranch
Другой вариант, который я нашел, заключался в том, чтобы исключить коммиты, достижимые мастером, и дает мне то, что я хочу, НО я бы хотел избежать необходимости знать имена других ветвей.
git log mybranch --not master
Я пытался использовать git for-each-ref
, но он также перечисляет mybranch, поэтому на самом деле он исключает все:
git log mybranch --not $(git for-each-ref --format '^%(refname:short)' refs/heads/)
Update:
Я тестирую новый вариант, который я нашел некоторое время назад, и до сих пор кажется, что это может быть то, что я искал:
git log --walk-reflogs mybranch
Обновление (2013-02-13T15: 08):
Параметр -walk-reflogs хорош, но я проверил, что есть срок действия для логов (по умолчанию 90 дней, gc.reflogExpire).
Думаю, я нашел ответ, который я искал:
git log mybranch --not $(git for-each-ref --format='%(refname)' refs/heads/ | grep -v "refs/heads/mybranch")
Я просто удаляю текущую ветку из списка доступных веток и используя этот список, который должен быть исключен из журнала. Таким образом, я получаю только коммиты , достигнутые только mybranch.