Ответ 1
Обновление 2015-05-15
Лучший ответ, непосредственно ссылающийся на родительские коммиты ветки:
$ git rev-list -1 --format=%p <branch_name> | grep -v commit |
xargs -I {} sh -c 'git rev-list -1 --format="%h %ct" {}' | grep -v commit
и вы все равно можете связать все ветки, объединенные с master
, в нем:
$ git branch -a --merged master | grep -v master |
xargs -I {} sh -c 'git rev-list -1 --format=%p {}' | grep -v commit |
xargs -I {} sh -c 'git rev-list -1 --format="%h %ct" {}' | grep -v commit
Это может работать даже для ветвей, которые стали частью вашего дерева из быстрой перемотки вперед.
Если есть аргумент, вы можете перейти к rev-list
, который мешает вам иметь grep -v commit
каждый раз, мне было бы интересно узнать его.
Примечание. Вместо grep -v master
я ищу имена ветвей, которые соответствуют issue
. Если вы хотите включить или исключить определенные ветки, вы должны сделать то же самое.
Оригинальные
Чтобы получить хеш, вы можете сделать следующее:
$ git log --ancestry-path --merges --format=%H <branch_name>..master | tail -1
или вы можете заменить формат в любом формате, который вы искали. --merges
просто уменьшает количество строк, возвращаемых до того, как мы выберем последний.
Вы можете связать список объединенных ветвей с помощью:
$ git branch -a --merged master | grep -v master |
xargs -I {} sh -c 'git log --ancestry-path --format=%H --merges {}..master | tail -1'
но я не сделал фактической обрезки. =)