Если вы только начинаете работать с контролем версий, эти инструменты могут показаться запутанными. В статье собраны самые важные команды Git и простые сценарии взаимодействия с GitHub, чтобы вы могли быстро перейти от теории к практике. Материал ориентирован на реальные задачи: создание репозитория, работа с ветками, отправка изменений и восстановление состояния.

Коротко о разнице между Git и GitHub

Git — это система контроля версий, которая хранит историю изменений в локальном репозитории. GitHub — это веб-сервис для хранения репозиториев, совместной работы и организации пулреквестов.

Понимание роли каждого из них важно: Git оперирует вашими файлами и коммитами, GitHub предоставляет удалённый хостинг и инструменты для совместной работы. Ниже — небольшая таблица для наглядности.

Git GitHub
Локальное хранение истории Удалённый хостинг репозиториев
Коммиты, ветки, слияния Пулреквесты, Issues, веб-интерфейс

Установка и базовая настройка

Установите Git через пакетный менеджер вашей системы или скачайте с официального сайта. После установки обязательно настройте имя и email — они попадут в каждый коммит.

Если планируете взаимодействовать с GitHub часто, сгенерируйте SSH-ключ и добавьте его в настройки аккаунта. Это избавит от ввода пароля при каждом push по HTTPS.

git config --global user.name "Ваше Имя"
git config --global user.email "you@example.com"
ssh-keygen -t ed25519 -C "you@example.com"

Создание и клонирование репозитория

Чтобы начать проект с нуля, выполните git init в каталоге с кодом. Команда создаст скрытую папку .git и подготовит рабочую копию к коммитам.

Если репозиторий уже находится на GitHub, клонируйте его командой git clone, указав URL или SSH-путь. Клонирование создаёт локальную копию с полной историей.

git init
git clone git@github.com:username/repo.git

Основные команды для повседневной работы

Список команд, которые вы будете использовать каждый день: status, add, commit, log и push. Статус показывает текущее состояние, add подготавливает файлы к коммиту, commit сохраняет снимок, log показывает историю, push отправляет изменения на удалённый сервер.

Несложный сценарий выглядит так: правите код, проверяете статус, добавляете нужные файлы и фиксируете изменения. После проверки отправляете коммиты на GitHub.

git status
git add file1 file2
git commit -m "Короткое описание изменений"
git log --oneline
git push origin main

Работа с ветками — простая модель

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

Создавать и переключаться между ветками можно двумя способами: через branch + checkout или через switch. После завершения работы ветку сливают в основную через merge или rebase в зависимости от принятой стратегии.

git branch feature/login
git switch feature/login
git merge feature/login
git branch -d feature/login

Практика: создать ветку, сделать коммит и отправить на GitHub

Создайте ветку, внесите изменения и зафиксируйте их локально. Затем выполните push, указав название ветки — так на GitHub появится удалённая ветка, и её можно использовать для пулреквеста.

git switch -c feature/button
# редактируем файлы
git add .
git commit -m "Добавлена кнопка"
git push -u origin feature/button

Взаимодействие с удалённым репозиторием

Команды remote, fetch, pull и push управляют обменом с GitHub. git fetch загружает новейшие объекты без слияния, git pull делает fetch и сразу пытается слить изменения с вашей веткой.

При коллизиях выполняется merge conflict, который нужно разрешить вручную. После разрешения конфликтов зафиксируйте итоговый вариант и отправьте на сервер.

git remote add origin git@github.com:username/repo.git
git fetch origin
git pull origin main
git push origin feature/xyz

Пулреквесты и код-ревью

Пулреквесты оформляются на GitHub: вы предлагаете изменения из ветки, и команда их обсуждает. Это ключевой этап для коллективной разработки и проверки качества кода.

На стороне GitHub можно просмотреть файлы, оставить комментарии и принять изменения. Локально подготовьте ветку аккуратно: маленькие логичные коммиты и понятные сообщения ускоряют ревью.

Восстановление и исправление ошибок

Git позволяет вернуться к предыдущим состояниям: для безопасного отката используйте git revert, он создаёт новый коммит с отменой изменений. git reset более радикален и меняет указатель ветки, поэтому требует осторожности.

Если нужно временно отложить незавершённую работу, применяйте git stash. Это удобнее, чем создавать черновую ветку для мелких правок.

git revert 
git reset --hard    # аккуратно, удаляет изменения в рабочем каталоге
git stash
git stash pop

Полезные мелочи и советы из практики

Добавьте .gitignore в начале проекта, чтобы не коммитить временные файлы и большие бинарники. Я видел, как один лишний бинарник заполнил репозиторий и затруднил клонирование коллег.

Часто полезно использовать git log —graph —oneline —all для визуального представления ветвлений. У меня это спасало при разборе сложных историй коммитов и выборе стратегии слияния.

Краткая шпаргалка: команды на одном листе

Команда Назначение
git init Создать локальный репозиторий
git clone Скопировать удалённый репозиторий
git status Посмотреть состояние файлов
git add Подготовить файл к коммиту
git commit -m «msg» Создать коммит
git push Отправить коммиты на удалённый сервер
git pull Загрузить и слить изменения с удалённого репозитория
git branch / git switch Управление ветками
git merge / git rebase Слияние веток

Что делать дальше

После освоения базовых команд попробуйте настроить workflow для команды: определите политики именования веток, стратегию слияний и правила ревью. Это поможет избежать хаоса по мере роста проекта.

Изучите также GitHub Actions для автоматизации сборки и тестов. Автоматические проверки экономят время и повышают надёжность релизов.

Первые шаги с Git и GitHub дают чувство контроля над кодом. Практикуйтесь на небольших проектах, не бойтесь экспериментировать в отдельных ветках и аккуратно работать с откатом. Со временем привычные команды станут вторым инструментом в вашей разработческой повседневности.