2026-07-01 13:51:24 +03:00
2026-07-01 13:47:41 +03:00
2026-07-01 13:34:19 +03:00

🌱 Farm Automation System

Учебный проект для практики работы с Git: слияние конфликтов и интерактивный ребейз.

Описание проекта

Простая система автоматизации гидропонной фермы на Python с использованием ООП:

  • BioCulture — класс биокультуры со стадиями роста ("Зеленый" → "Красный")
  • HydroponicModule — модуль, управляющий несколькими культурами
  • FarmAgent — агент-оператор для управления модулем и сбора урожая

Структура проекта

Igor-kr/
├── main.py              # Точка входа
├── farm_core/
│   ├── __init__.py
│   ├── module.py        # Классы BioCulture и HydroponicModule
│   └── agent.py         # Класс FarmAgent
└── README.md

Ветки

  • main — базовая заготовка со "сломанным" методом grow() (вызывает NotImplementedError)
  • feature-api — рабочая реализация метода grow() и новая функция harvest()

🎯 Практические задания

Задание 1: Разрешение конфликтов при слиянии

Цель: Научиться разрешать merge conflicts.

Шаги:

  1. Убедитесь, что вы на ветке main:

    git checkout main
    
  2. Попытайтесь слить ветку feature-api:

    git merge feature-api
    
  3. Ожидаемый результат: Конфликт в файле farm_core/module.py в методе grow():

    • В main: raise NotImplementedError("Рост не реализован в main!")
    • В feature-api: self._stage = "Красный"
  4. Откройте файл farm_core/module.py и разрешите конфликт:

    • Удалите маркеры конфликта (<<<<<<<, =======, >>>>>>>)
    • Оставьте рабочую реализацию из feature-api
  5. Завершите слияние:

    git add farm_core/module.py
    git commit -m "Resolve merge conflict in grow() method"
    

Задание 2: Интерактивный ребейз (очистка истории)

Цель: Научиться объединять "мусорные" коммиты в один чистый коммит.

Шаги:

  1. Переключитесь на ветку feature-api:

    git checkout feature-api
    
  2. Посмотрите на историю коммитов:

    git log --oneline -5
    

    Вы увидите три мусорных коммита:

    9ae915a done
    930b346 fix2
    f358639 fix
    eaafccb Implement grow method and harvest function
    
  3. Запустите интерактивный ребейз для последних 3 коммитов:

    git rebase -i HEAD~3
    
  4. В открывшемся редакторе измените команды:

    pick f358639 fix
    squash 930b346 fix2
    squash 9ae915a done
    

    (Или используйте fixup вместо squash, чтобы отбросить сообщения коммитов)

  5. Сохраните и закройте редактор. В следующем редакторе напишите новое сообщение коммита:

    Clean up: remove debug comments
    
  6. Проверьте результат:

    git log --oneline -3
    

    Теперь вместо трех мусорных коммитов — один чистый коммит.

Задание 3 (дополнительно): Проверка работы кода

  1. Переключитесь на main после успешного слияния

  2. Допишите в main.py цикл для проверки работы:

    for culture in module.cultures:
        culture.grow()
    
    print(f"Готово к сбору: {agent.harvest()} культур(ы)")
    
  3. Запустите код:

    python main.py
    

Ожидаемый вывод:

Инструкция: pH 6.0
Готово к сбору: 3 культур(ы)

📚 Полезные команды Git

# Просмотр статуса
git status

# Просмотр истории
git log --oneline --graph --all

# Просмотр изменений
git diff

# Отмена изменений (до коммита)
git restore <file>

# Просмотр веток
git branch -a

# Создание новой ветки
git checkout -b <branch-name>

Критерии успешного выполнения

  • Конфликт в module.py успешно разрешен
  • Метод grow() работает корректно (изменяет стадию на "Красный")
  • Три мусорных коммита объединены в один
  • История коммитов чистая и понятная
  • Код запускается без ошибок

Автор: Dmitry Belan
Дата: 2026-07-01

S
Description
No description provided
Readme MIT 41 KiB
Languages
Python 100%