Функция Git Staging area - PullRequest
       2

Функция Git Staging area

0 голосов
/ 04 октября 2018

Я прошел через объектную модель Git и прочитал другие статьи о Git, но не смог ясно понять о Git staging area.

Что делаетместо постановки на самом деле делать?

Создает ли он объект blob и объект дерева, когда мы делаем git add, а когда мы делаем git commit объект фиксации связан с родительским коммитом и соответствующим объектом дерева, который уже связан с ним?объект blob / tree?

Или

Сохраняет ли она просто информацию в индексном файле (что-то изменилось, и когда мы делаем git, добавляется, что оно готово к фиксации) и когда мы делаем git commit происходит ли создание и связывание всех объектов между объектами commit, tree, blob?

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

«Стадионная зона» - это удобный жаргон для наиболее распространенного и популярного способа использования индекса.Ваш первый вариант,

Создает ли он объект blob и объект дерева, когда мы делаем git add и когда мы делаем git commit, объект commit связан с родительским коммитом и соответствующим объектом дерева, который уже связанк этому объекту blob / tree?

имеет почти точное право: git add помещает то, что вы добавили в репо, и git commit связывает объект фиксации с родительским коммитом и соответствующим объектом дерева- - - но этого соответствующего объекта дерева еще нет в репо, git commit строит дерево (которое связывает имена путей с контентом), консультируясь с индексом, который в точности соответствует его названию: индекс, привязывая пути к контенту,

Итак, git checkout обновляет индекс так, чтобы он указывал на содержимое, которое он извлекал при каждом извлеченном пути, а git add обновляет индекс, чтобы он указывал на содержимое, которое он добавил для каждого добавленного пути.

Таким образом, вы можете использовать это как "область подготовки", git commit заботится только о том, что вы добавили, а не о том, что находится в вашем рабочем дереве.Вот почему git checkout, git reset, git commit и git add имеют опции --patch: есть то, что вы извлекли, что вы добавили, и что находится в вашем рабочем дереве.В любой момент может быть полезно увидеть различия между какими-либо из них или «вернуть» часть изменений, которые вы внесли, возможно, потому что они принадлежат другому коммиту или просто нуждаются в дальнейшей работе.

0 голосов
/ 04 октября 2018

Промежуточная область - это файл, обычно содержащийся в вашем каталоге Git, в котором хранится информация о том, что войдет в ваш следующий коммит.Его техническое название на языке Git - index, но фраза staging area работает так же хорошо.

К stage файлу просто для его тонкой подготовки к фиксации.Git с его индексом позволяет вам фиксировать только те части изменений, которые вы сделали со времени последнего коммита.Допустим, вы работаете над двумя функциями - одна закончена, а другая все еще требует определенной работы.Вы хотели бы сделать коммит и вернуться домой, но не хотели бы фиксировать части второй функции, которая еще не сделана.Вы ставите части, которые, как вы знаете, принадлежат первой функции, и делаете коммит.Теперь ваш коммит - это ваш проект с первой выполненной функцией, в то время как вторая находится в стадии разработки в вашем рабочем каталоге.

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

git commit фиксирует добавленные файлы и создает новую ревизию с журналом ... Если вы не добавляете файлы, git ничего не фиксирует.Вы можете объединить оба действия с помощью git commit -a

git push, чтобы отправить ваши изменения в удаленный репозиторий.

Вы делаете коммит, который принимает файлы в том виде, в котором они находятся в промежуточной области, исохраняет этот снимок в вашей директории Git.Подробнее: https://git -scm.com / book / ru / v2 / Начало работы с Git-Basics

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