Какие основные команды Git используются для отправки изменений в удаленный репозиторий?

«Какие основные команды Git используются для отправки изменений в удаленный репозиторий?» — вопрос из категории Git, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Работа с Git — ежедневная рутина. Для отправки изменений используется последовательность команд, которую я часто автоматизирую в CI/CD или alias'ах.

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

  1. git add <файлы> — добавляет изменения из рабочей директории в индекс (staging area).

    • git add . — добавить все измененные и новые файлы.
    • git add -p — интерактивное добавление частей файлов (очень полезно для разделения правок).
  2. git commit -m "<сообщение>" — создает коммит из проиндексированных изменений. Я придерживаюсь конвенций (например, Conventional Commits): feat:, fix:, chore:, docs:.

    git commit -m "fix(kubernetes): increase pod readiness probe timeout"
  3. git push <remote> <branch> — отправляет коммиты из локальной ветки в указанную удаленную ветку.

    git push origin feature/auto-scaling-fix
    • -u или --set-upstream — при первом пуше связывает локальную и удаленную ветку, чтобы в дальнейшем можно было использовать просто git push.
      git push -u origin main

Дополнительные команды и сценарии:

  • Отправка тегов: git push origin <tagname> или git push --tags для отправки всех тегов. Использую для релизов.
  • Принудительная отправка (--force или --force-with-lease): Требуется осторожность, так как перезаписывает историю на удаленном репозитории. --force-with-lease безопаснее — она проверяет, что локальная версия истории актуальна.
    # После rebase локальной ветки
    git push --force-with-lease origin my-branch
  • Отправка в несколько репозиториев: Можно настроить remote с несколькими URL.

Пример полного цикла для фиксации исправления:

# Клонируем репозиторий (если нужно)
git clone git@github.com:company/infra.git
cd infra

# Создаем и переключаемся на новую ветку для задачи
git checkout -b hotfix/fix-db-backup-script

# Вносим изменения в скрипт...
nano scripts/backup_db.sh

# Добавляем и коммитим изменения
git add scripts/backup_db.sh
git commit -m "fix(backup): correct PostgreSQL dump command options"

# Отправляем ветку в удаленный репозиторий и связываем ее
git push -u origin hotfix/fix-db-backup-script
# После этого создается Pull/Merge Request для ревью.

В CI/CD пайплайнах (GitLab CI, GitHub Actions) команда git push часто используется для автоматического обновления версий, ченджлогов или конфигурационных файлов после успешной сборки.