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

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

Ответ

Чтобы опубликовать локальные изменения на удалённом сервере (например, GitHub, GitLab), используется команда git push. Процесс состоит из трёх основных шагов.

1. Стандартный рабочий процесс

# 1. Добавить изменения в индекс (staging area)
git add .                     # Все изменённые файлы
git add <имя_файла>           # Конкретный файл

# 2. Создать коммит с описанием
git commit -m "Краткое и ясное описание изменений"

# 3. Отправить коммиты на удалённый репозиторий
git push origin <имя_ветки>   # Например, git push origin main

2. Публикация новой ветки При первом push новой локальной ветки нужно установить связь с удалённой:

git checkout -b feature/new-widget  # Создать и переключиться на новую ветку
# ... вносим изменения, делаем коммиты ...
git push -u origin feature/new-widget  # Ключ -u устанавливает upstream

После -u в дальнейшем можно использовать просто git push.

3. Разрешение конфликтов и принудительная отправка

  • Если удалённая история изменилась (например, кто-то уже делал push), Git потребует сначала выполнить git pull и разрешить конфликты.
  • Принудительная отправка (--force или --force-with-lease) перезаписывает удалённую историю вашей локальной. Используйте с крайней осторожностью, только если вы уверены в последствиях и работаете в одиночку в ветке.
    # Более безопасная альтернатива --force
    git push --force-with-lease origin main

4. Просмотр и управление удалёнными репозиториями

# Показать список удалённых репозиториев (обычно 'origin')
git remote -v

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

# Отправить изменения в другую удалённую ветку
git push upstream main

Итог: Базовый цикл — add -> commit -> push. Всегда проверяйте статус (git status) и историю (git log --oneline) перед отправкой, чтобы убедиться, что вы публикуете именно то, что планировали.