Архив рассылок сообщества снова открыт. Читать письма 2003-2009
Главная/Блог/Разработка
Разработка9 мин чтения

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 прощает почти всё - главное, регулярно коммитьте и не бойтесь экспериментировать в ветках.

Вернуться в блог