Введение в Git

Системы контроля версий представляют собой программные средства, которые регистрируют все изменения в исходном коде и позволяют легко восстановить старые версии.

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

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

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

Git — самое популярное приложение контроля версий.

Как устроен Git

  • Вы работаете над проектом. В любой момент вы можете сохранить "снимок" (snapshot) вашего проекта. И работать дальше

  • В любой момент вы можете "откатиться" назад — вернуться к любому из "снимков"

  • Если вы работаете над проектом не один — ваши коллеги также могут работать над проектом, реализуя другие фичи. И никто не будет мешать друг другу. Это возможно благодаря концепции "веток" (бранчей) — каждый может работать в своей ветке, а потом слить всё в одну.

Установка

Скачайте GIT по ссылке: https://git-scm.com/downloads

Использование

Если вы работаете на Windows, то после установки увидите программы:

  • GIT GUI — приложение с графическим интерфейсом

  • GIT Bash — командная оболочка для управления Git. Даже если вы планируете всегда работать из GUI, знать основные команды необходимо.

    • В будущем возможно вы будете работать под Linux, для которого нет графического приложения.

    • Работа с командной строкой для любого разработчика — это полезный навык.

    • Даже с GUI часть команд нужно вводить через консоль

  1. Создайте каталог для вашего проекта.

  2. Запустите программу GIT Bash. Перейдите в папку с проектом.

  3. Настройте git, введя в консоль следующие команды (исправьте на своё имя и почту):

git config --global user.name "My Name"
git config --global user.email myEmail@example.com
  1. Введите команду git init для создания нового репозитория

  2. Репозиторий создан. Теперь состояние вашего проекта отслеживается и доступна история изменений. Убедиться в этом можно при помощи команды git status

Практика:

  • Установите GIT на компьютер, создайте репозиторий.

  • Создайте файл "hello.txt" в своём репозитории, добавьте любой текст

Основные команды

git add <filename> — добавить файл в "отслеживаемые", то есть подготовить к коммиту

git add . — подготовить к коммиту сразу все файлы репозитория (точка важна!)

git reset <имя_файла> — убрать файл из "отслеживаемых"

git commit -m <сообщение коммита> — сделать коммит

git status — посмотреть статус файлов

git log — посмотреть коммиты

git show <hash_commit> — посмотреть информацию о коммите, здесь хэш коммита - его идентификационный номер

git commit --amend -m 'Новый комментарий' — перезаписать сообщение последнего коммита

git revert <hash_commit> — вернуться на состояние до указанного коммита

Удаленный репозиторий

  • Чтобы поделиться кодом, он должен где-то храниться

  • Для этого существуют удаленные репозитории и сервисы для их хранения

  • Один из примеров таких сервисов это GitHub

Практика:

  • Зарегистрируйтесь на GitHub

Теперь вы можете склонировать себе любой репозиторий, который там есть. Для этого введите команду:

git clone <ссылка_на_проект> Обратите внимание, каталог с репозиторием будет создан в рабочей директории.

Для подключения своего, локального репозитория к удаленному, введите команду:

git remote add origin <ссылка на удаленный репозиторий>

Для этого удаленный репозиторий должен быть создан. То есть перед этим создайте репозиторий на GitHub.

Ещё пару команд:

git push origin master — запушить изменения в ветку "master" в удаленный репозиторий "origin". Часто главная ветка называется "main".

git pull origin master — стянуть себе изменения из удаленного репозитория

Работа с ветками

Ветка — независимая последовательности коммитов в хронологическом порядке

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

# создание ветки
$ git branch <name of new branch>
# переключение на ветку
$ git checkout <name of branch>
# создаем ветку и сразу в нее переключаемся:
$ git checkout branch <name of new branch> 
# посмотреть, какие ветки есть
$ git branch
# переименовать ветку
$ git branch -m <new name of branch>
# удалить ветку
$ git branch -d <name of branch>
# удалить ветку даже с несохраненными изменениями
$ git branch -D <name of branch>

Слияние

$ git merge <name of merged branch>

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

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

  • —abort — прерывает слияние и возвращает все к началу

  • —continue — продолжает слияние после разрешения конфликта

Решить конфликт можно двумя способами:

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

  • Выбрать более подходящий файл, а от второго отказаться.

Git Flow

  • Git Flow — стандарт работы с Git, который устанавливается в крупных компаниях и для совместной работы над крупным проектом

Материалы для изучения:

Last updated