НЕ МОЛЧИ!!!    Сделай что-нибудь, чтобы остановить войну России в Украине.
...бойтесь людей равнодушных - именно с их молчаливого согласия происходят все самые ужасные преступления на свете.   ("Репортаж с петлёй на шее")

Введение в Git

Краткий курс по Git для начинающих. Описаны основы работы с системой, поясняются используемые термины.

Термины, используемые в Git

Git — распределённая система управления версиями, это значит, что в Git может быть множество хранилищ версий проекта, находящихся на разных компьютерах.
Repository — это хранилище, база данных Git. В репозитории хранятся файлы, изменения в которых необходимо отслеживать, история этих изменений, настройки и прочая служебная информация.
Workspace – рабочая папка с файлами проекта, в этой же папке находится локальный репозиторий Git (папка . git).
Staging area — это список объектов, предназначенных для сохранения в репозитории Git. В этот список можно добавлять любые файлы и папки из рабочей папки Workspace.
Index – область зафиксированных изменений файлов и папок проекта, т.е. список ресурсов проекта, которые  подготовлены к сохранению в репозитории.
Commit – сохранение в репозитории Git текущего состояния всех индексируемых (отслеживаемых на наличие изменений) файлов и папок. Каждый коммит имеет свой уникальный идентификатор (является SHA-суммой всех отслеживаемых файлов) и, как правило, текстовый комментарий, описывающий сохраняемое состояние проекта. Из коммитов состоит каждая ветка(branch) репозитория. Коммиты производятся, как правило, после завершения какого-то этапа работы.
Branch – ответвление от основной ветви разработки проекта, хранится в репозитории. Когда надо зафиксировать какое-то состояние проекта, к которому надо будет вернуться позднее, то создают отдельную ветку (branch).
Head – указатель на последний коммит, т.е. на то состояние, в котором сейчас находятся файлы проекта.

Подчеркиваю, Git это распределенная система контроля версий. Это значит, что у каждого пользователя в его личном компьютере есть рабочая папка проекта, где он работает над проектом, есть локальный репозиторий, где он хранит свои версии проекта и есть общий для всех удаленный репозиторий, куда этот пользователь выталкивает содержимое своего локального репозитория и откуда он получает текущее состояние проекта после его изменения другими участниками. Другими словами, в Git существует основной (как правило где-то на сервере)  репозиторий и ряд локальных репозиториев пользователей, в которых хранятся  текущие изменения файлов проекта.

Три состояния файлов, отслеживаемых Git

При работе с Git файлы проекта могут находиться в одном из трёх состояний:

  • зафиксированное
  • изменённое
  • подготовленное

«Зафиксированный» — значит, что файл рабочей области был сохранён в вашей локальной базе данных и с тех пор не менялся.

«Изменённый» — значит, что файл, редактировался после последнего коммита(сохранения в репозитории), но ещё не был отмечен для сохранения в репозитории.

«Подготовленный» файл — это изменённый файл, отмеченный для включения в следующий коммит, т.е. предназначенный для сохранения в репозитории.
Также в проектах, использующих Git, есть три важные составляющие: рабочий каталог (working directory), каталог Git’а (Git directory), и область подготовленных файлов (staging area или index).

Основные операции при работе с Git Основные операции при работе с Git

Каталог Git (repository) — это место, где Git хранит метаданные и базу данных объектов вашего проекта. Это наиболее важная часть Git’а, и именно она копируется, когда вы клонируете репозиторий с другого компьютера.
Рабочий каталог(working directory) — это извлечённая из базы копия определённой версии проекта. Эти файлы достаются из сжатой базы данных в каталоге Git’а и помещаются в папку, предназначенную для работы с проектом.
Область подготовленных файлов(staging area) — это обычный файл, обычно хранящийся в каталоге Git’а, который содержит информацию о том, что должно войти в следующий коммит, иногда его называют индексом (index).
Если рабочая версия файла совпадает с версией в каталоге Git, файл считается зафиксированным. Если файл изменён и добавлен в область подготовленных данных, он подготовлен. Если же файл изменился после выгрузки из БД, но не был подготовлен, то он считается изменённым.
Стандартный рабочий процесс при работе с Git выглядит примерно так:

  1. Вы изменяете файлы в своём рабочем каталоге, создаете новые, удаляете ненужные.
  2. Подготавливаете те файлы, которые готовы для сохранения в репозитории, помечая их как подготовленные.
  3. Делаете коммит, который берёт подготовленные файлы из индекса и помещает их в каталог Git’а на постоянное хранение.

Вот и все, для знакомства с основами Git достаточно.

Установка Git в Windows

Установка Git в Windows производится достаточно просто. Нужно скачать файл инсталлятора, например, со страницы проекта на GitHub’е и запустить его:
http://msysgit.github.com/
Будут установлены как консольная версия с SSH-клиентом, так и стандартная графическая.
Примечание. При работе в терминальном режиме советую использовать Git только из командой оболочки, входящей в состав msysGit. Дело в том, что командная оболочка Windows использует иной синтаксис, из-за чего некоторые команды Git’а могут работать некорректно.

Установка Git в Linux

Установить Git в Linux также не составит труда. Например, в клонах Debian наберите в терминале команду

sudo apt-get install git

Заключение

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