Git пугает новичков. Странные команды, загадочные ошибки, мерж-конфликты, после которых хочется плакать. Но на самом деле Git — это просто. За 15 минут вы освоите 90% команд, которые нужны в ежедневной работе. Поехали.
Что такое Git и зачем он нужен?
Git — это система контроля версий. Представьте, что вы пишете курсовую и сохраняете файлы как «диплом_финал.doc», «диплом_финал_реально_финал.doc», «диплом_финал_2.doc». Git делает это автоматически и аккуратно. Вы можете в любой момент:
- Вернуться к любой предыдущей версии кода
- Работать над новыми фичами в изолированных ветках
- Смотреть, кто и когда изменил конкретную строчку
- Синхронизировать код с командой
Установка и первая настройка
brew install git
# Windows — скачать с git-scm.com
# Ubuntu/Debian
sudo apt install git
После установки представьтесь Git'у — он подписывает коммиты вашим именем:
git config --global user.email "your@email.com"
Базовые команды: создаём первый репозиторий
Создаём папку с проектом и инициализируем Git:
cd my-project
git init
Теперь Git отслеживает эту папку. Создаём файл и делаем первый коммит:
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 merge feature-login
Конфликты и их решение
Конфликт возникает, когда две ветки меняют одни и те же строки в файле. Git не знает, чью правку выбрать. Вы увидите что-то вроде:
return "Привет, мир!";
=======
return "Hello, world!";
>>>>>>> feature-login
Вручную удалите <<< === >>>, оставьте нужный вариант, затем:
git commit -m "Решил конфликт"
Работа с удалённым репозиторием (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. Практика решает всё.