В чем разница между командами git commit и git push?

«В чем разница между командами git commit и git push?» — вопрос из категории CI/CD и DevOps, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

git commit и git push — это последовательные этапы работы с Git, которые выполняют разные функции в локальном и удаленном контексте.

Основное различие

  • git commit — сохраняет изменения в локальном репозитории, создавая новый коммит с историей.
  • git push — отправляет локальные коммиты в удаленный репозиторий (GitHub, GitLab, Bitbucket).

Рабочий процесс

# 1. Подготовка изменений
git add index.html style.css

# 2. Фиксация в локальном репозитории
git commit -m "Добавлена главная страница и стили"
# ↑ Создан коммит с хешем, например: abc123
# ↑ Изменения сохранены только на вашем компьютере

# 3. Отправка в удаленный репозиторий
git push origin main
# ↑ Коммит abc123 теперь доступен другим разработчикам
# ↑ Изменения синхронизированы с сервером

Ключевые особенности

git commit:

  • Работает только с локальной историей
  • Можно делать множество коммитов без интернета
  • Можно изменять историю (git commit --amend, git rebase) до отправки
  • Каждый коммит имеет уникальный SHA-1 хеш

git push:

  • Требует подключения к удаленному репозиторию
  • Отправляет все новые коммиты из текущей ветки
  • Может быть отклонен, если есть конфликты с удаленной веткой
  • После отправки изменять историю опасно (требует --force с осторожностью)

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

# Несколько локальных коммитов
git commit -m "Исправление бага #123"
git commit -m "Добавлены тесты"
git commit -m "Обновление документации"

# Одна отправка всех трех коммитов
git push origin feature-branch

Важно: git commit не требует сетевого подключения, в то время как git push зависит от доступности удаленного репозитория.