Ответ 1
Это возможно. Через bash
, и предположим, что origin/master
- ваша целевая ветка:
$ echo $(git merge-base HEAD origin/master)..HEAD | git pack-objects --revs --thin --stdout --all-progress-implied > packfile
Проверка размера результирующего packfile
даст вам представление о том, сколько данных необходимо отправить, чтобы сделать удаленный доступным.
Я использовал этот подход из более раннего ответа , когда я пытался настроить размер загружаемого пакета. Это немного хак, так как вам нужно генерировать packfile
- теоретически, как только вы знаете диапазон коммитов, которые были изменены локально и удаленно, вы можете просто спросить git
для имен этих объектов (a рекурсивная проблема, поскольку объекты могут ссылаться на другие объекты) и подсчитывать размеры этих объектов.
(Затем опять же создание файла пакета также упаковывает эти объекты - точно так же, как git push
- так что размер более репрезентативен для того, что будет отправлено.)
Если у вас есть другие разработчики, работающие на ветке вы хотите, чтобы нажать на, то любая оценка является спорным, так как вы, вероятно, придется запустить git fetch
Перед нажатием на пульте дистанционного управления, что означает передачу неизвестное количество данных!