Первая нота:
git
сжимает файлы, когда сохраняет их в своей структуре .git/
, и пытается сохранить похожие файлы, используя только их различия;
в этом смысле трудно определить, «какой коммит занимает больше места в моей папке .git/
».
Если вы хотите измерить, сколько места занимают файлы в коммите при извлечении:
git ls-tree -r -l <commitid>
перечислит файлы вместе с их индивидуальными размерами
git ls-tree -r -l <commitid> | awk '{ sum += $4 } END { print sum }'
напечатает общий размер этих файлов.
Вы можете поместить вышеупомянутый ярлык в скрипт и посмотреть, что коммиты занимают более xx
байт, следующее: вы можете избавиться от этих коммитов?
Вы можете указать git удалить конец ветки:
If all 'B's mark 'big commits' :
+-- create a new branch here
v
*--*--*--*--*--*--B--B--B--B <- branchA
\ \
\ \-B--B <- branchB
\
*--*--*--* <- branchC
\
\--B <- branchD
На приведенной выше диаграмме вы можете сказать git забыть branchA
, branchB
и branchD
(и, возможно, создать новую ссылку, чтобы сохранить первые коммиты "не такие большие"),
но когда коммит появляется в середине ветки:
*--*--B--B--*--* <- branchE
Ваше понятие «удалить два B» сильно зависит от того, что хранится в вашем репо git
, и от того, как вы можете удалить эти коммиты из истории ветки.
Общий совет: не удаляйте коммиты.