Не уверен, если кто-то все еще заинтересован в этом вопросе.Я сталкиваюсь с теми же проблемами, и вот мое решение, которое использует фильтр файлов git.
Редактировать: Во-первых, я не могу заявить, что это ясно, но это IS ответ на вопрос ОП!Прочитайте все предложение, прежде чем комментировать.Кроме того, спасибо @Toon Krijthe за совет, чтобы уточнить решение на месте.
Мое решение состоит в том, чтобы использовать фильтр для «преобразования» zip-файла в монолитный расширенный (может быть огромный) текстовый файл.Во время git add / commit файл zip будет автоматически расширен до этого текстового формата для обычного преобразования текста, а во время извлечения он снова автоматически заархивирован.
Текстовый файл состоит из записей, каждая из которых представляет файлв молнии.Таким образом, вы можете считать этот текстовый файл текстовым изображением для оригинального почтового индекса.Если файл в zip-файле представляет собой текст на деле, он копируется в текстовый файл;в противном случае он кодируется в base64 перед копированием в файл текстового формата.Это сохраняет текстовый файл всегда текстовым файлом.
Хотя этот фильтр не делает каждый файл в zip-объекте большим двоичным объектом, текстовый файл отображается строка за строкой, которая является единицей разницы, в то время как изменения двоичных файлов могут быть представлены обновлениями соответствующих им base64,Я думаю, что это эквивалентно тому, что воображает ОП.
Для получения подробной информации и кода для создания прототипа вы можете прочитать следующую ссылку:
Фильтр файлов Zippey Git
Также, спасибо за место, которое меня вдохновилооб этом решении: Описание работы фильтра файлов