Предположим, у вас следующая ситуация:
origin/branch A---B
\
(local) branch C---D
Тогда вы git push
:
origin/branch & (local) branch A---B---C---D
После push
предыдущий коммит будет refs/remotes/origin/branch@{1}
.Таким образом, вы можете "отменить" толчок с помощью:
git push -f origin refs/remotes/origin/branch@{1}:branch
В качестве альтернативы, если вы хотите, чтобы количество зафиксированных изменений фактически изменилось:
git rev-list --count refs/remotes/origin/branch@{1}..refs/remotes/origin/branch
ПРИМЕЧАНИЯ:
- Это работает из репозитория, который сделал
push
.Я не знаю, будет ли команда работать правильно из другого репо - хотя я ожидаю, что это будет после обновления ссылки с git fetch
- Я понятия не имею, как это будет обрабатывать принудительный толчок или любую другую операциюэто forcible устанавливает ref для определенного идентификатора коммита.