Git хорошо работает с бинарными файлами?

Хорошо ли работать с бинарными файлами?

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

Если git плохо работает с бинарными файлами, какой инструмент мне стоит рассмотреть?

git
75 голосов | спросил user34537 15 Jam1000000amSat, 15 Jan 2011 03:08:01 +030011 2011, 03:08:01

5 ответов


0

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

  • Вы можете отправить 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 , чтобы иметь ---- +: = 1 =: + ---- показать читаемый человеком разностный файл для двоичных файлов или частей двоичных файлов. Например, для файлов * .jpg это может быть разница в информации EXIF, для файлов PDF это может быть разница между их текстовым представлением (pdf2text или чем-то подобным).

НТН.

ответил Jakub Narębski 16 Jpm1000000pmSun, 16 Jan 2011 16:13:17 +030011 2011, 16:13:17
0

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

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

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

ответил ndim 15 Jam1000000amSat, 15 Jan 2011 03:21:14 +030011 2011, 03:21:14
0

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

ответил John Gibb 11 +04002012-10-11T01:04:09+04:00312012bEurope/MoscowThu, 11 Oct 2012 01:04:09 +0400 2012, 01:04:09
0

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

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

ответил coreyward 15 Jam1000000amSat, 15 Jan 2011 03:15:23 +030011 2011, 03:15:23
0

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

ответил Loïc Faure-Lacroix 15 Jam1000000amSat, 15 Jan 2011 03:11:32 +030011 2011, 03:11:32

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132