Каковы основные концепции и команды в Git?

«Каковы основные концепции и команды в Git?» — вопрос из категории git, который задают на 10% собеседований Python Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Git — это распределённая система контроля версий (VCS), которая отслеживает изменения в файлах проекта. Её работа основана на создании "снимков" (snapshots) состояния файлов.

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

  • Репозиторий (.git): Локальная база данных в корне проекта, хранящая всю историю изменений, коммиты и ветки.
  • Коммит (Commit): Снимок состояния файлов в определенный момент времени. Каждый коммит имеет уникальный SHA-1 хэш и содержит ссылку на родительский коммит, образуя историю.
  • Ветка (Branch): Подвижный указатель на коммит. Позволяет вести параллельную разработку, не затрагивая основную кодовую базу (main или master).
  • Три состояния файла:
    1. Рабочая директория (Working Directory): Файлы в их текущем виде.
    2. Индекс (Staging Area): Область для подготовки следующего коммита. Файлы добавляются сюда командой git add.
    3. Репозиторий (HEAD): Зафиксированные изменения, сохраненные в .git.

Базовый рабочий процесс:

# 1. Клонировать удаленный репозиторий
git clone <repository_url>

# 2. Создать новую ветку для задачи и переключиться на нее
git checkout -b new-feature

# 3. Внести изменения в файлы...

# 4. Добавить измененные файлы в индекс (staging)
git add . # Добавить все файлы
# или git add <filename>

# 5. Зафиксировать изменения в коммите
git commit -m "feat: Add user authentication"

# 6. Отправить ветку на удаленный сервер
git push origin new-feature

# 7. После ревью, слить ветку в основную
git checkout main
git pull origin main # Обновить локальную main
git merge new-feature

Главное преимущество Git — его распределённая природа. У каждого разработчика есть полная копия истории репозитория, что повышает надежность и позволяет работать автономно.