Linux Labs

Автоматизация: Git и Ansible / Ступень 2 из 6

Конфиг из репозитория: pull и конфликты

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 1 из 7 · на машине · 5 мин

git pull отказывается

Чему научишься

  • Объяснять, откуда git pull берёт коммиты и почему отказывается, по выводу git status и git log HEAD..origin/main.
  • Обновлять рабочую копию, не теряя локальную правку: git stash, git pull, git stash pop.
  • Отправлять свой коммит git push и собирать конфликт в файле из обеих версий.

Конфиг сайта lab-site команда держит в общем репозитории /srv/git/lab-site.git, а каталог /etc/nginx/conf.d на сервере — его рабочая копия. Утром коллега отправил в репозиторий новую страницу /status, и сервер нужно обновить: свежие коммиты забирает git pull. Попробуй — и посмотри, в каком состоянии осталась рабочая копия.

Упражнение · посмотреть

Попробуй обновить сервер из репозитория

В /etc/nginx/conf.d забери обновление из репозитория, затем посмотри состояние рабочей копии.

Сначала предположи

В репозитории новый коммит, а на сервере кто-то правил тот же файл и не закоммитил. Что сделает sudo git pull?

Теперь начни упражнение, выполни команду и сверь прогноз с выводом.

Войти и начать Машина доступна после входа
Проверь себя 1 вопрос

git pull скачал коммит коллеги, но в файлы его не перенёс. Что его остановило?

  • Коммит скачан: status пишет «behind by 1 commit», а sudo git log --oneline HEAD..origin/main его показывает. Отказ — на переносе в файлы.

  • Команда шла через sudo, от root. Ошибка прав выглядела бы как «Permission denied», а git написал «would be overwritten by merge».

  • Строки разные: коммит добавляет /status в конец файла, а правка — access_log в начало. git откажет при любой незакоммиченной правке файла, который меняет новый коммит.

git не перезаписывает правку, которой нет в истории, и отказывается переносить коммит в такой файл.

Ubuntu 24.04
Загрузка…