Гит на страже кода
Разработчику стоит следить и ухаживать за кодом. Системы контроля версий дают такую возможность.
git — распределённая система управления версиями. Непонятно о чем речь и зачем эта система нужна начинающим разработчикам. Разберем её по частям, чтобы понять ценность такой системы в каждодневной работе.
Терминал
Осваивать гит надо из терминала. Со знаниями и опытом уже можно браться за сторонний софт. Про основы работы в терминале будет отдельная заметка.
Гит и гитхаб
Это разные вещи! Гит — система, а гитхаб — сервис, объединяющий репозиторий. Соцсеть где вместо фоточек хвастаются кодом.
Гитхаб
Социальная сеть для разработчиков. Удаленный репозиторий — это как раз про репозиторий в гитхабе. Кодим локально и показываем своё творение всему миру!
Чтобы отправлять свой код без ввода пароля каждый раз, надо сгенерировать ключ и сообщить гитхабу что этот ключ наш. Так сервис сможем нас определять и не путать с кем-то другим. Ключ нужно добавлять лишь один раз для аккаунта.
О нюансах, командах и ограничениях гитхаб подскажет сам.
Установка
Для популярных ОС есть пакет с гитом. Осталось его найти, скачать и установить. Для мака и убунту это делается из терминала.
Скачать для Windows
Установить на macOS
Установить на Ubuntu
Первичная настройка
Нужно внести данные о себе после установки пакета. Делается это простыми командами.
git config --global user.name "Arthur Bordenyuk"
git config --global user.email "me@apmyp.pro"
Репозиторий
Гит репозиторий — это директория на стероидах. Команда инициализации в пустой директории создает репозиторий.
git init
Гит следит за изменениями и хранит их. Разработчик вносит изменения в код и фиксирует их в репозитории — комиттит.
Коммит
В конце задачи разработчик фиксирует изменения. Процесс фиксации состоит из двух шагов:
- Пометить в каких файлах изменения нужно зафиксировать;
- Указать комментарий.
git add .
git commit -am "Мой супер коммит"

Сформированный коммит имеет данные об авторе изменений, дате, ветке и список самих изменений.
Ветви
Даже работая в одиночку нельзя игнорировать ветки. В репозитории всегда есть одна ветка — master. По-умолчанию, все коммиты попадают в неё. Создать другую ветку и сразу в неё перейти можно командой:
git checkout -b branch_name

Ветки можно использовать по-разному. Есть методологии, которые объясняют как надо. Одна из таких — git flow. В простом варианте для каждой задачи разработчик создает отдельную ветку и в ней работает. По окончанию работы его ветка сливается с основной, но сначал её нужно отправить в удаленный репозиторий.
Push
git push
Команда отправляет все коммиты из текущей ветки в удаленный репозиторий. Синхронизирует локальную версию с удаленной. Обычно удаленный репозиторий, это репозиторий на гитхабе, битбакете или гитлабе.
Pull
git pull
Команда подтягивает с удаленного репозитория в локальной коммиты, которых нет. Синхронизирует удаленную версию с локальной.
Pull Request
Созданную ветку разработчик хочет слить с основной. Ветка уже запушена. Пора создавать пул реквест. На этом моменте и происходит процесс ревью кода. Коллеги смотрят на код, задают вопросы или просят изменения. Когда все готово — запрос (реквест) принимается и код соединяется с основной кодовой базой, с основной веткой.
