- Изменяете файлы вашей рабочей копии.
- Выборочно добавляете в индекс только те изменения, которые должны попасть в следующий коммит.
- Когда вы делаете коммит, используются файлы из индекса как есть, и этот снимок сохраняется в ваш каталог GIT.
GIT
подготовлено редакцией сайта
GIT — это распределенная система управления версиями, которая используется для отслеживания изменений в исходном коде программного обеспечения. С помощью GIT разработчики могут эффективно сотрудничать, отслеживать историю изменений, создавать ветки для разработки новых функций, а также объединять изменения из разных веток.
Большинство других систем контроля версий хранят информацию в виде списка изменений в файлах. GIT работает иначе — он хранит скорее набор снимков — полное отображение того, как выглядит файл в момент сохранения. Это позволяет всегда иметь полную информацию обо всех файлах и быстро восстанавливать любую из предыдущих версий.
Есть проект, в котором пишется код. В нём создано окружение GIT — все изменения файлов отслеживаются в рамках настроенных параметров и заданных фильтров. Нужно добавить в проект новую функцию, изменив или доработав существующий код.
Для этого потребуется создать внутри проекта отдельную ветку — в GIT они называются branch. Работа в этой ветке никак не затрагивает основной код — если с новыми изменениями что-то пойдёт не так и код станет невалидным и перестанет запускаться, основной проект не пострадает. Также в рамках GIT можно объединять разные версии кода в один. Например, над проектом трудится несколько программистов, и каждый разрабатывает или изменяет код в собственных ветках. В конце работы появится необходимость слить ветки вместе — и получается цельная программа. Это значительно облегчает совместную работу, так как не нужно ждать, пока другой разработчик допишет код — можно работать параллельно.
Если же в одной из веток разработка пойдёт не по плану и произойдёт ошибка — всё можно просто откатить до предыдущей ветки в системе контроля версий GIT, где ошибок не было. И начать разработку заново.
В GIT для всего вычисляется хеш-сумма, и только потом происходит сохранение. В дальнейшем обращение к сохранённым объектам происходит по этой хеш-сумме. Это значит, что невозможно изменить содержимое файла или каталога так, чтобы GIT не узнал об этом. Данная функциональность встроена в GIT на низком уровне и является неотъемлемой частью его философии. Вы не потеряете информацию во время её передачи и не получите повреждённый файл без ведома GIT.
Механизм, которым пользуется GIT при вычислении хеш-сумм, называется SHA-1 хеш. Это строка длиной в 40 шестнадцатеричных символов (0–9 и a–f), она вычисляется на основе содержимого файла или структуры каталога. SHA-1 хеш выглядит примерно так:
24b9da6552252987aa493b52f 8696cd6d3b00373
Вы будете постоянно встречать хеши в GIT, потому что он использует их повсеместно. На самом деле, GIT сохраняет все объекты в свою базу данных не по имени, а по хеш-сумме содержимого объекта.
У GIT есть три основных состояния, в которых могут находиться ваши файлы: изменён (modified), индексирован (staged) и зафиксирован (committed):
Мы подошли к трём основным секциям проекта GIT: рабочая копия (working tree), область индексирования (staging area) и каталог GIT (Git directory).
Рабочая копия является снимком одной версии проекта. Эти файлы извлекаются из сжатой базы данных в каталоге GIT и помещаются на диск, для того чтобы их можно было использовать или редактировать.
Область индексирования — это файл, обычно находящийся в каталоге GIT, в нём содержится информация о том, что попадёт в следующий коммит. Её техническое название на языке GIT — «индекс», но фраза «область индексирования» также работает.
Каталог GIT — это то место, где GIT хранит метаданные и базу объектов вашего проекта. Это самая важная часть GIT и это та часть, которая копируется при клонировании репозитория с другого компьютера.
Базовый подход в работе с GIT выглядит так: