↓Перейти к содержанию
  1. Git: руководства и команды/

Основы Git: краткая шпаргалка по ключевым концепциям и командам

·5 минут·

Git может показаться сложным, но его основные концепции просты. Если вы только начинаете — эта шпаргалка покроет всё необходимое для повседневной работы. Если вы уже знакомы с Git — используйте её как быстрый справочник.

Ключевые концепции Git #

Репозиторий (Repository) — папка проекта с историей Git. Физически хранится в скрытой папке .git. Это база данных всех версий проекта.

Рабочая директория (Working Directory) — папка вашего проекта, где вы редактируете файлы. То, что вы видите в файловой системе.

Индекс / Staging Area — промежуточная область, где вы выбираете, какие изменения включить в следующий коммит. «Зал ожидания» перед сохранением.

Коммит (Commit) — снимок состояния проекта в определённый момент с описанием изменений. Неизменяемая запись в истории.

Ветка (Branch) — параллельная линия разработки. По сути это просто указатель на конкретный коммит.

Указатель HEAD — указатель на текущую ветку и коммит. Показывает «где вы сейчас находитесь» в истории.

Слияние (Merge) — объединение изменений из одной ветки в другую.

Удалённый репозиторий (Remote) — копия проекта на сервере (GitHub, GitLab и т.д.). Origin — стандартное имя для основного удалённого репозитория.

Push — отправка локальных коммитов на удалённый репозиторий.

Pull — получение изменений из удалённого репозитория и слияние с локальным.

Жизненный цикл файла в Git #

Untracked (не отслеживается)
    ↓ git add
Staged (подготовлено для коммита)
    ↓ git commit
Committed (зафиксировано в истории)
    ↓ редактирование файла
Modified (изменено, но не подготовлено)
    ↓ git add
Staged
    ↓ git commit
...

Новый файл начинает жизнь как Untracked — Git его не знает. После git add он становится Staged. После git commit — Committed. При изменении переходит в Modified, и цикл повторяется.

Типичный рабочий процесс #

  1. Создайте репозиторий: git init или git clone
  2. Отредактируйте файлы
  3. Подготовьте изменения: git add
  4. Создайте коммит: git commit -m "сообщение"
  5. Повторяйте шаги 2–4
  6. Отправьте на сервер: git push
  7. Получите изменения коллег: git pull

Основные команды Git #

# Инициализация и клонирование
git init                           # Создать новый репозиторий
git clone <url>                    # Скачать репозиторий с сервера

# Проверка статуса
git status                         # Посмотреть изменения
git diff                           # Посмотреть разницу в файлах
git log                            # Посмотреть историю коммитов
git log --oneline                  # История в компактном виде
git log --graph --oneline --all    # Граф всех веток

# Подготовка и фиксация
git add <файл>                     # Добавить файл в staging
git add .                          # Добавить все изменения
git commit -m "сообщение"          # Создать коммит
git commit -am "сообщение"         # Добавить изменённые и закоммитить

# Ветки
git branch                         # Список веток
git branch <имя>                   # Создать ветку
git switch <ветка>                 # Переключиться на ветку
git switch -c <ветка>              # Создать и переключиться
git merge <ветка>                  # Объединить ветку в текущую
git branch -d <ветка>              # Удалить ветку

# Синхронизация с сервером
git remote -v                      # Посмотреть удалённые репозитории
git push origin <ветка>            # Отправить на сервер
git pull origin <ветка>            # Получить и объединить
git fetch origin                   # Получить изменения без слияния

# Откат изменений
git revert <коммит>                # Отменить коммит (создаёт новый коммит)
git reset HEAD~1                   # Отменить последний коммит (изменения остаются)
git restore <файл>                 # Отменить изменения в файле

Структура хорошего сообщения коммита #

<тип>: краткое описание (до 50 символов)

Подробное объяснение если нужно.
Объясняйте ЧТО и ПОЧЕМУ, не КАК.

Refs: #123

Хорошее сообщение коммита имеет структуру: первая строка — краткое описание до 50 символов, вторая строка — пустая разделитель, остальные строки — подробное объяснение до 72 символов.

# Плохие сообщения коммитов
git commit -m "обновление"
git commit -m "фиксы"
git commit -m "асдфасдф"

# Хорошие сообщения коммитов
git commit -m "feat: добавлена функция авторизации через OAuth2"
git commit -m "fix: исправлена ошибка валидации email в форме регистрации"
git commit -m "docs: обновлена документация по API"

Типы для Conventional Commits: feat, fix, docs, style, refactor, perf, test, chore, ci.

Работа с ветками #

Ветки используются для: разработки новых функций без влияния на основной код, исправления ошибок в изоляции, параллельной работы нескольких разработчиков.

Типичная схема веток:

main          # основная ветка, готовый код
develop       # ветка для разработки (в Git Flow)
feature/...   # ветка для новой функции
bugfix/...    # ветка для исправления ошибки
hotfix/...    # срочное исправление в production
release/...   # ветка подготовки релиза

Конфликты слияния #

Когда Git не может автоматически объединить ветки (изменения в одной строке из разных веток), происходит конфликт.

Признак конфликта в файле:

<<<<<<< HEAD
ваше изменение
=======
их изменение
>>>>>>> feature/branch

Решение: отредактируйте файл вручную, выберите нужное изменение (или совместите оба), удалите маркеры конфликта, сохраните и создайте коммит.

Практический сценарий работы #

# Начало работы над новой функцией
git switch -c feature/user-profile

# Редактирование файлов (в IDE)

# Проверка статуса
git status

# Подготовка изменений
git add src/user-profile.js
git add styles/user-profile.css

# Создание коммита
git commit -m "feat: добавлена страница профиля пользователя

- Создан компонент UserProfile
- Добавлены стили для адаптивного дизайна
- Интегрирована загрузка данных из API"

# Отправка на сервер
git push origin feature/user-profile

# После одобрения Pull Request — слияние в main
git switch main
git pull origin main

# Удаление локальной ветки
git branch -d feature/user-profile

Часто задаваемые вопросы #

Что такое HEAD в Git? HEAD — это указатель на текущий коммит, на котором вы находитесь. Обычно указывает на последний коммит текущей ветки. В режиме detached HEAD указывает прямо на коммит.

В чём разница между fetch и pull? git fetch получает изменения с сервера, но не сливает их. git pull = git fetch + git merge. Используйте fetch когда хотите посмотреть изменения перед слиянием.

Как переименовать ветку? git branch -m старое-имя новое-имя. Для переименования текущей ветки: git branch -m новое-имя.

Можно ли удалить ветку? Да, git branch -d имя-ветки. Флаг -d не удалит ветку, если она не слита. Для принудительного удаления используйте -D.

Что такое .gitignore? Файл, в котором указаны паттерны файлов и папок, которые Git не должен отслеживать. Подробнее в статье .gitignore: полное руководство.

Заключение #

Основы Git просты: репозиторий, коммиты, ветки, синхронизация. Овладейте этими концепциями — и 90% повседневных задач будут решаться легко. Для практики прямо в браузере — пройдите интерактивный тур по Git. Для углублённого изучения читайте полное руководство по git commit и другие статьи этого блога.

По теме #