Рассмотрите возможность использования трехточечной нотации и флага --left-right
:
git rev-list --left-right --count upstream/master...master
Как описано в документации gitrevisions , трехточечная нотация A...B
создает симметрия c разница наборов коммитов достижимы из двух идентификаторов или га sh идентификаторов A
и B
. (Более подробную информацию о достижимости см. Думайте как (а) Git.)
Обычно это будет просто:
- все коммиты на
upstream/master
, которые не на master
, плюс - все коммиты на
master
, которые не на upstream/master
, что было бы просто сумма. Но добавление --left-right
говорит Git к разбиению наборов на две части. Без --count
вы получите список, помеченный маркерами <
и >
, который сообщит вам, какой коммит с каким идентификатором связан с sh. С --count
вы получаете два счета. В этом случае, если upstream/master
строго опережает master
, первый счет будет ненулевым, а второй - нулем. Например, если upstream/master
на 2 впереди, вывод будет 2 0
.
Это работает, если вы также поменяете местами имена; просто теперь счет меняется. В приведенном выше случае вы теперь получите 0 2
.
Выберите любой понравившийся вам порядок и получите оба счета или используйте двухточечную запись, чтобы получить только один счет. Единственное число, которое вы получите, с A..B
, это количество коммитов, достижимых с B
, но не достижимых с A
. Если upstream/master
«впереди» и вам нужен этот счет, вам нужно master..upstream/master
при использовании двухточечного метода.