Git для начинающих: контроль версий без страха и боли
Разбираемся, как начать работать с Git спокойно: коммиты, ветки, откат ошибок и связь с GitHub.
Если вы когда-нибудь создавали файлы вроде report_final_v2_реально_последний.txt, значит, вы уже интуитивно нуждались в контроле версий. Git решает эту проблему по-настоящему: он запоминает историю изменений, позволяет вернуться к любому состоянию проекта и спокойно работать в команде. В этой статье разберём базу без лишнего страха - шаг за шагом.
Зачем нужен контроль версий
Контроль версий - это система, которая хранит снимки вашего проекта во времени. Каждый значимый шаг вы фиксируете как коммит, и потом можете посмотреть, что и когда менялось, кто это сделал, и при необходимости откатиться назад. Git работает локально: вся история лежит у вас на компьютере, поэтому большинство операций мгновенны и не требуют интернета.
Главные выгоды простые. Вы не боитесь сломать код, потому что всегда есть история. Вы можете экспериментировать в отдельной ветке. И вы легко делитесь работой через сервисы вроде GitHub или GitLab.
Первый запуск и базовая настройка
После установки Git стоит один раз представиться - имя и почта попадут в каждый коммит.
git config --global user.name "Ivan Petrov"
git config --global user.email "ivan@example.com"
git config --global init.defaultBranch mainЧтобы начать отслеживать проект, зайдите в его папку и создайте репозиторий командой init. Если проект уже есть на GitHub, используйте clone.
# новый проект с нуля
cd ~/my-project
git init
# копия существующего репозитория
git clone https://github.com/user/repo.gitБазовый рабочий процесс
Ежедневная работа с Git крутится вокруг трёх зон: рабочая папка, индекс (staging) и история. Вы меняете файлы, добавляете нужные в индекс через add, затем фиксируете их коммитом.
# посмотреть, что изменилось
git status
# добавить конкретный файл или всё сразу
git add index.html
git add .
# зафиксировать с понятным сообщением
git commit -m "Добавил форму обратной связи"Хорошее сообщение коммита отвечает на вопрос "что делает этот коммит". Пишите в настоящем времени и по сути: "Исправил валидацию email", а не "фиксы".
Чтобы обмениваться изменениями с сервером, используются push (отправить) и pull (забрать).
# отправить коммиты на сервер
git push origin main
# забрать свежие изменения от коллег
git pull origin mainВетки и слияние
Ветка - это независимая линия разработки. Вы создаёте новую ветку под задачу, спокойно в ней работаете, а потом вливаете результат в основную. Основной код при этом не страдает, пока задача не готова.
# создать ветку и сразу переключиться
git switch -c feature/login
# посмотреть список веток
git branch
# вернуться на основную ветку
git switch main
# влить ветку с задачей в main
git merge feature/loginИногда при слиянии возникает конфликт - это когда один и тот же участок файла менялся в двух ветках по-разному. Git честно покажет проблемные места маркерами <<<<<<<, ======= и >>>>>>>. Вам нужно вручную оставить правильный вариант, убрать маркеры, а затем сделать add и commit. Конфликты пугают новичков, но это обычная рабочая ситуация.
Файл .gitignore
Не всё нужно хранить в репозитории: временные файлы, папки зависимостей, локальные настройки и пароли туда попадать не должны. Для этого есть файл .gitignore - в нём перечислены шаблоны того, что Git игнорирует.
# зависимости
node_modules/
venv/
# логи и временные файлы
*.log
*.tmp
# локальные секреты
.env
# системный мусор
.DS_StoreСоздайте .gitignore в корне проекта до первого коммита - так вы не затащите в историю лишнее.
Как исправить типичные ошибки
Ошибки случаются, и почти всё в Git обратимо. Вот самые частые ситуации новичка.
Забыли добавить файл в последний коммит или опечатались в сообщении - поправьте последний коммит.
git add забытый-файл.css
git commit --amend -m "Правильное сообщение"Хотите отменить последний коммит, но сохранить изменения в файлах - используйте мягкий сброс.
# коммит убран, правки остались в рабочей папке
git reset --soft HEAD~1Испортили файл и хотите вернуть его к состоянию последнего коммита.
git restore имя-файла.pyПравило безопасности: команды с флагом --hard и force-push удаляют данные безвозвратно. Пока вы новичок, избегайте их и всегда сначала делайте git status, чтобы понять текущее состояние.
Связь с GitHub и GitLab
GitHub и GitLab - это хостинги для Git-репозиториев. Они хранят копию вашего проекта в облаке, дают веб-интерфейс, историю, ревью кода и совместную работу. Типичный старт: создаёте пустой репозиторий на сайте, привязываете его как удалённый (remote) и отправляете код.
# привязать удалённый репозиторий
git remote add origin https://github.com/user/repo.git
# первый push с установкой связи веток
git push -u origin mainПосле -u в дальнейшем достаточно писать просто git push и git pull. Освоив этот минимум, вы уже способны вести любой проект аккуратно и без паники. Git прощает почти всё - главное, регулярно коммитьте и не бойтесь экспериментировать в ветках.