Является ли git хорошим с бинарными файлами?

Является ли git хорошим с бинарными файлами?

Если у меня есть много несжатых файлов, которые меняются, и многие сжатые файлы никогда (или почти никогда) не будут модифицированы, будет ли git обрабатывать его хорошо? Например, если я вставляю или удаляю середину и вставляю данные ближе к концу, она заметит ее так же, как и с текстом?

Если git не подходит для двоичных файлов, какой инструмент я могу рассмотреть?

Ответ 1

В дополнение к другим ответам.

  • Вы можете отправить diff в двоичный файл, используя так называемый формат двоичный diff. Он не читается человеком, и его можно применять только в том случае, если у вас есть точный прообраз в вашем репозитории, т.е. Без каких-либо пугов.
    Пример:

    diff --git a/gitweb/git-favicon.png b/gitweb/git-favicon.png
    index de637c0608090162a6ce6b51d5f9bfe512cf8bcf..aae35a70e70351fe6dcb3e905e2e388cf0cb0ac3 100
    GIT binary patch
    delta 85
    zcmZ3&SUf?+pEJNG#Pt9J149GD|NsBH{?u>)*{Yr{jv*Y^lOtGJcy4sCvGS>LGzvuT
    nGSco!%*slUXkjQ0+{(x>@rZKt$^5c~Kn)[email protected]{1-oD!M<s|Fj6
    
    delta 135
    zcmXS3!Z<;to+rR3#Pt9J149GDe=s<ftM(tr<t*@sEM{Qf76xHPhFNnYfP!|OE{-7;
    zjI0MY3OYE5upapO?DR{I1pyyR7cx(jY7y^{FfMCvb5IaiQM`[email protected]
    [email protected]=fAo=hV3$-MIWu9%vGSr>mdKI;RB2CICA_GnfDX
    
  • Вы можете использовать textconv gitattribute, чтобы git diff отображал человеко-читаемый diff для двоичные файлы или части двоичных файлов. Например, для файлов *.jpg это может быть разница в информации EXIF, для файлов PDF это может быть разница между их текстовым представлением (pdf2text или что-то в этом роде).

НТН.

Ответ 2

Из git можно легко добавить двоичные файлы в свой индекс, а также сохранить их эффективным образом, если вы не делаете частых обновлений для больших несжатых файлов.

Проблемы начинаются, когда git должен генерировать различия и слияния: git не может генерировать значащие различия или объединить двоичные файлы любым способом, который мог бы иметь смысл. Таким образом, все слияния, переустановки или черрипики, связанные с изменением бинарного файла, будут включать в себя разрешение ручного разрешения конфликтов в этом двоичном файле.

Вам нужно решить, достаточно ли изменен бинарный файл, чтобы вы могли жить с дополнительной ручной работой, которую они вызывают в обычном рабочем процессе git, включая слияния, переустановки, черри.

Ответ 3

Если у вас действительно большие двоичные файлы, вы можете использовать git -annex для хранения данных вне репозитория. Отъезд: http://git-annex.branchable.com/

Ответ 4

Я не знаю каких-либо инструментов, которые пытаются хранить diff для двоичных файлов для контроля версий, но стоит отметить, что Git не делает этого даже для текстовых файлов. Git хранит файлы как капли, и он делает разницу между ними, когда это необходимо.

Если вы хотите сделать управление версиями на что-то вроде документов Photoshop/Illustrator, GridIron Flow может сделать трюк для вас. Если вы пытаетесь синхронизировать их между машинами, Dropbox или Rsync могут справиться с этим, но они не собираются делать интеллектуальную разницу.

Ответ 5

Хорошо git хорошо работает с двоичными файлами. Но он не будет обрабатывать двоичные файлы, такие как текстовые файлы. Это похоже на то, что вы хотите объединить двоичные файлы. Я имею в виду, что diff в jpeg никогда не вернет вам ничего. git отлично работает с текстовым файлом и, вероятно, так же плохо, как и все другие решения с двоичными файлами!