Skip to content

📚 Версионный контроль (Git)

1. Что такое версионный контроль?

Версионный контроль — это система, которая позволяет отслеживать изменения в файлах проекта во времени. Это особенно важно при разработке программного обеспечения, так как позволяет:

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

💡 Почему именно Git?

Git — это распределённая система контроля версий, созданная Линусом Торвальдсом в 2005 году. Он бесплатен, мощный, поддерживает локальные и удалённые репозитории, гибкую систему веток и историю изменений.


2. Основные понятия Git

Термин Описание
Репозиторий (Repository) Хранилище файлов проекта вместе с историей изменений.
Коммит (Commit) Сохранённое изменение в истории проекта. Каждый коммит имеет уникальный хэш и сообщение описания.
Ветка (Branch) Параллельная версия проекта. Позволяет работать над разными задачами независимо.
Master/Main Основная стабильная ветка проекта.
Статус (Status) Показывает текущее состояние рабочей директории и индекса.
Индекс (Staging area) Область, где выбираются изменения для следующего коммита.
Пулл (Pull) Получение изменений из удалённого репозитория.
Пуш (Push) Отправка своих изменений в удалённый репозиторий.

3. Установка Git

После установки задайте имя и email:

git config --global user.name "YourName"
git config --global user.email "your@email.com"

4. Базовые команды Git

Инициализация и клонирование

# Создать новый репозиторий в текущей папке
git init

# Склонировать существующий репозиторий
git clone https://github.com/example/project.git

Работа с изменениями

# Проверить статус рабочей директории
git status

# Добавить все изменения к следующему коммиту
git add .

# Или добавить конкретный файл
git add filename.txt

# Зафиксировать изменения
git commit -m "Описание изменений"

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

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

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

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

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

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

# Объединить ветку с текущей
git merge feature-name

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

# Посмотреть подключённые удалённые репозитории
git remote -v

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

# Загрузить изменения с сервера
git pull origin main

# Отправить изменения на сервер
git push origin main

5. Рекомендации по работе с Git

✅ Названия коммитов

Соблюдайте стиль написания коммитов:

  • Используйте глагол в повелительном наклонении: "Add", "Fix", "Update", "Remove"
  • Примеры хороших коммитов:
  • Fix bug in login flow
  • Update dependencies
  • Add validation to form fields

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

Рекомендуется использовать следующую стратегию:

  • main / master — стабильная версия.
  • develop — основная ветка разработки.
  • feature/... — ветки для новых функций.
  • bugfix/... — ветки для исправления багов.
  • hotfix/... — срочные исправления для production.

🔄 Регулярно обновляйте репозиторий

Перед началом работы всегда выполняйте:

git pull origin develop

Чтобы быть уверенным, что вы работаете с актуальной версией кода.


6. Полезные инструменты и сервисы

Сервис Описание
GitHub Самый популярный хостинг репозиториев. Поддерживает CI/CD, Issues, Pull Requests и т.д.
GitLab Альтернатива GitHub с аналогичным функционалом. Подходит для частных проектов и корпоративного использования.
Bitbucket Хорош для малых и средних команд, интегрируется с Jira.
VSCode + Git Встроенный интерфейс Git в Visual Studio Code удобен для новичков.
Sourcetree Графический клиент для работы с Git. Бесплатный, от Atlassian.

7. Частые проблемы и решения

Проблема Решение
Я случайно закоммитил не тот файл git reset HEAD filename
Нужно отменить последний коммит git reset --soft HEAD~1
Изменения сломали код — хочу откатиться git checkout <commit-hash>
Конфликты при слиянии Разрешаются вручную через редактор. После правки выполните git add, затем git commit.

8. Полезные ссылки


9. FAQ

❓ Что делать, если я не знаю, какие файлы изменились?

git diff

❓ Как посмотреть изменения определённого файла?

git diff filename.txt

❓ Как удалить ветку?

git branch -d branch-name

❓ Как увидеть, кто изменил строку в файле?

git blame filename.txt