Как Git использует git объекты для хранения формата файла? - PullRequest
0 голосов
/ 23 апреля 2020

Насколько мне известно, Git использует свои объекты BLOB для хранения содержимого файла в двоичном формате. Так где хранится формат файла? Хранится ли он в объекте дерева? Предположим, у меня есть 2 файла, file1.docx и file2.png , и я зафиксировал эти файлы. Таким образом, git будет иметь двоичное содержимое file1.docx в объекте BLOB-объекта, и аналогично другой объект BLOB-объекта будет содержать содержимое file2.png . Но где будет храниться формат этих двух файлов, потому что, когда я использую хранилище, теперь файловая система требует формат файла.

Кроме того, если файл является текстовым, будет ли он где-то хранить свою кодировку символов?

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020

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

Git objects for each commit Источник: Google

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

Надеюсь, это было достаточно ясно. Спасибо

0 голосов
/ 23 апреля 2020

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

Это распакует / распакует файлы из коммита и восстановит их байт за байтом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...