Git для новичков: пошаговое руководство, которое работает

Git пугает новичков. Странные команды, загадочные ошибки, мерж-конфликты, после которых хочется плакать. Но на самом деле Git — это просто. За 15 минут вы освоите 90% команд, которые нужны в ежедневной работе. Поехали.

Git workflow

Что такое Git и зачем он нужен?

Git — это система контроля версий. Представьте, что вы пишете курсовую и сохраняете файлы как «диплом_финал.doc», «диплом_финал_реально_финал.doc», «диплом_финал_2.doc». Git делает это автоматически и аккуратно. Вы можете в любой момент:

  • Вернуться к любой предыдущей версии кода
  • Работать над новыми фичами в изолированных ветках
  • Смотреть, кто и когда изменил конкретную строчку
  • Синхронизировать код с командой

Установка и первая настройка

# macOS (через Homebrew)
brew install git

# Windows — скачать с git-scm.com
# Ubuntu/Debian
sudo apt install git

После установки представьтесь Git'у — он подписывает коммиты вашим именем:

git config --global user.name "Ваше Имя"
git config --global user.email "your@email.com"

Базовые команды: создаём первый репозиторий

Создаём папку с проектом и инициализируем Git:

mkdir my-project
cd my-project
git init

Теперь Git отслеживает эту папку. Создаём файл и делаем первый коммит:

echo "# Мой проект" > README.md
git add README.md
git commit -m "Первый коммит: добавил README"
  • git add — добавляет файлы в «индекс», подготовку к коммиту
  • git commit — создаёт снимок состояния с сообщением
  • -m — флаг для сообщения (message)

Статусы файлов: жизненный цикл

Файлы в Git могут находиться в нескольких состояниях:

  • Untracked — новый файл, Git не отслеживает
  • Modified — файл изменён, но не добавлен в индекс
  • Staged — файл в индексе, готов к коммиту
  • Committed — изменения сохранены в репозитории

Проверить статус можно командой git status. Это самая частая команда, используйте её постоянно.

Ветки (branches): основа командной работы

Ветка — это независимая линия разработки. Основная ветка обычно называется main или master. Новые фичи делают в отдельных ветках, чтобы не сломать стабильный код.

# Посмотреть все ветки
git branch

# Создать новую ветку
git branch feature-login

# Переключиться на ветку
git checkout feature-login

# Создать и переключиться одной командой
git checkout -b feature-login

Слияние веток (merge)

Когда фича готова, её нужно влить в основную ветку:

git checkout main
git merge feature-login

Конфликты и их решение

Конфликт возникает, когда две ветки меняют одни и те же строки в файле. Git не знает, чью правку выбрать. Вы увидите что-то вроде:

<<<<<<< HEAD
return "Привет, мир!";
=======
return "Hello, world!";
>>>>>>> feature-login

Вручную удалите <<< === >>>, оставьте нужный вариант, затем:

git add .
git commit -m "Решил конфликт"
Git терминал

Работа с удалённым репозиторием (GitHub)

Локальные коммиты — это хорошо, но код нужно где-то хранить и делиться с командой. GitHub, GitLab, Bitbucket — сервисы для этого.

# Связать локальный репозиторий с удалённым
git remote add origin https://github.com/username/repo.git

# Отправить изменения (push)
git push -u origin main

# Забрать изменения (pull)
git pull origin main

# Склонировать чужой репозиторий
git clone https://github.com/username/repo.git

Полезные команды на каждый день

  • git log — история коммитов (нажмите q для выхода)
  • git log --oneline — краткая история (одна строка на коммит)
  • git diff — показывает изменения до git add
  • git diff --staged — изменения после git add
  • git reset HEAD file.txt — убрать файл из индекса
  • git checkout -- file.txt — отменить изменения в файле
  • git branch -d branch-name — удалить ветку
  • git stash — временно спрятать изменения
  • git stash pop — вернуть спрятанное

.gitignore: что не нужно коммитить

Создайте файл .gitignore в корне проекта и перечислите папки/файлы, которые Git должен игнорировать:

# Зависимости
node_modules/
vendor/

# Логи и кэш
*.log
.cache/

# Файлы с секретами
.env
config.local.php

Правила хороших коммитов

  • Делайте маленькие коммиты (одна логическая задача — один коммит)
  • Пишите осмысленные сообщения на русском или английском
  • Используйте инфинитивы: «Добавить валидацию», «Исправить баг с авторизацией»
  • Не коммитьте закомментированный код и мусорные файлы
  • Чаще делайте git status и git diff

Заключение: Git — это как велосипед. Сначала страшно, потом не представляете жизни без него. Начните с малого: инициализируйте репозиторий, сделайте пару коммитов, создайте ветку. Ошибки неизбежны, но их всегда можно исправить — для этого есть git reset, git revert и добрый Google. Практика решает всё.