Я на самом деле еще не использовал их, но они предназначены для улучшения по сравнению со старым потоком git cherry*
для анализа / сравнения некоторого набора изменений в восходящем или нисходящем направлении с тем, что у вас есть сейчас.Чтобы сделать наборы диапазонов полезными, мы хотим, чтобы некоторый набор «вот мои коммиты» и «вот их» был выражен настолько просто, насколько это возможно.
A range1 range2 set woiuld записываетсякак, например:
git range-diff theirs~5..theirs ours~4..ours
, если у вас было, например:
T1--T2--T3--T4--T5 <-- theirs
/
...--o--* <-- base
\
O1--O2--O3--O4 <-- ours
, где O
коммиты "наши", а T
коммиты "их".
Учитывая эту точно такую же конфигурацию, мы могли бы также написать:
git range-diff theirs...ours # or ours...theirs
(обратите внимание на три точки).(Это синтаксис, используемый с git rev-list --cherry-mark --left-right
, например.)
Или, опять же, учитывая ту же ситуацию, мы могли бы написать:
git range-diff base theirs ours # or base ours theirs
Здесь base
- точка остановкикак для их, так и для нас, и избегает необходимости обратного отсчета 5.
Если ситуация более сложная - как на графике:
X1--T1--T2--T3 <-- theirs
/
...--o--* <-- base
\
Y1--Y2--O1--O2--O3--O4 <-- ours
ни трехточка, ни base ours theirs
вид синтаксиса вполне работает, поэтому лучше всего подойдет два набора диапазонов (theirs~3..theirs ours~4..ours
).