Практические кейсы и ежедневные сценарии
🔧 Сценарий 1: Редактирование существующего файла конфигурации
playbooks/site.yml (например, скорректировать пути бэкапов) и зафиксировать это в истории.
1. Перейдите в каталог репозитория и обновите файлы до актуального состояния:
cd ~/projects/infra git pull origin main
2. Откройте файл в вашем текстовом редакторе для внесения изменений:
# Введите команду редактирования (например, "nano" или ваш настроенный alias "edit" для Notepad++) edit playbooks/site.yml
3. Сохраните изменения, вернитесь в консоль и зафиксируйте их:
# Проверьте, какие файлы были изменены git status -sДобавьте измененный файл в индекс
git add playbooks/site.yml
Создайте коммит с понятным описанием изменений
git commit -m "fix: update backup paths in site.yml"
Отправьте коммит на сервер Gitea
git push origin main
📦 Сценарий 2: Создание новой роли/файла (Работа с Untracked-файлами)
roles/nginx/tasks/main.yml.
1. Создайте структуру каталогов и откройте новый файл в редакторе:
mkdir -p roles/nginx/tasks edit roles/nginx/tasks/main.yml
2. Начните отслеживание нового файла в Git:
git add . в корневом каталоге. Она может случайно захватить временные лог-файлы или незашифрованные файлы секретов. Добавляйте новые файлы точечно, прописывая к ним явные пути.
# Проверьте статус (файл должен находиться в категории Untracked) git statusЯвно укажите Git начать отслеживание этого файла
git add roles/nginx/tasks/main.yml
Создайте коммит и отправьте его на сервер
git commit -m "feat: add basic task layout for nginx role" git push origin main
🌿 Сценарий 3: Изолированное тестирование рискованных изменений
main, с которой работают остальные члены команды.
1. Создайте изолированную экспериментальную ветку и перейдите на неё:
# Переключитесь на актуальную версию ветки main git switch main git pull origin mainСоздайте ветку эксперимента
git switch -c experiment/global-refactor
2. Отредактируйте файлы и зафиксируйте изменения локально:
# Откройте плейбук для внесения тестовых изменений edit playbooks/base_setup.ymlТак как мы находимся в изолированной ветке, мы можем безопасно добавить изменения измененных файлов
git add -u git commit -m "refactor: apply experimental directory structuring"
3. Примите решение по результатам тестирования:
ВАРИАНТ А Эксперимент удался. Вливаем изменения в основную ветку:
# Вернитесь в ветку main git switch mainСлейте изменения из экспериментальной ветки в основную
git merge experiment/global-refactor
Отправьте объединенный результат на сервер
git push origin main
ВАРИАНТ Б Эксперимент провалился. Безболезненно удаляем ветку:
# Вернитесь на стабильную ветку main git switch mainПринудительно удалите испорченную ветку эксперимента
git branch -D experiment/global-refactor
💥 Сценарий 4: Разрешение конфликтов при попытке слияния
git pull или выполнить merge, консоль выдала ошибку "CONFLICT (content): Merge conflict in playbooks/site.yml".
1. Локализуйте конфликтный файл:
git status # Ищите пометку "both modified: playbooks/site.yml"
2. Откройте этот файл в текстовом редакторе:
edit playbooks/site.yml
3. Найдите в тексте разделительные маркеры Git:
<<<<<<< HEAD Ваша локальная версия (то, что было у вас на компьютере) ======= Удаленная версия (то, что кто-то уже успел отправить на Gitea) >>>>>>> a1b2c3d4...
4. Отредактируйте конфликтную область:
Удалите маркеры конфликта (`<<<<<<<`, `=======`, `>>>>>>>`) и оставьте только правильную логику (возможно, объединив обе версии).
5. Зафиксируйте успешное решение конфликта в репозитории:
# Сообщите Git, что конфликт решен git add playbooks/site.ymlЗавершите операцию слияния
git commit -m "merge: resolve conflicts in site.yml"