Один из способов нацелить X0
:
- это ближайший предок, который находится как в цепочке первых родителей от мастера , так и в цепочке первых родителей из release
Я не знаю, как это сделать в одном go с одним git rev-list
или git log
, но вот способ получить его через скрипт:
# get the list of first-parents of master, store this list in a file :
$ git rev-list --first-parent master > /tmp/tmp-rev-list
# get the list for release, and grep it using 'tmp-rev-list'
# commits will be listed in topo order, 'X0' is the first one :
$ git rev-list --first-parent release | grep -f /tmp/tmp-rev-list | head -1
Вы можете ускорить grep
, используя -F
(что означает: все шаблоны - тупые строки, без регулярного выражения),
, и вы можете пропустить tmp-файл, используя <( ... )
:
$ X0=$( git rev-list --first-parent release |\
grep -Ff <(git rev-list --first-parent master) |\
head -1 )
# obviously : it would be better to write this command in a script,
# and then use it to get X0: X0=$(bash myscript.sh)
Получив этот идентификатор фиксации, вы можете просто запустить:
$ git log $X0..release