Перейти к основному содержанию
EDU-MMCS
Вы используете гостевой доступ (Вход)

Основы работы с данными для ИИ

  1. В начало
  2. Курсы
  3. Осенний семестр
  4. Фундаментальная информатика и ИТ
  5. DataSc101
  6. Основы работы с Git и GitHub
  7. Лабораторная работа 2. Совместная работа в Git

Лабораторная работа 2. Совместная работа в Git

Требуемые условия завершения
Открыто с: среда, 17 сентября 2025, 00:00
Срок сдачи: вторник, 23 сентября 2025, 00:00

В первой лабораторной работе вы познакомились с основами Git: создали локальный и удалённый репозиторий, научились делать коммиты и отправлять изменения на GitHub. Однако в реальных проектах над кодом работает несколько человек одновременно. В этой работе вы изучите инструменты, которые делают такую работу возможной и эффективной: ветвление (branching), систему Issues для постановки задач, Pull Requests для проверки кода

Часть 1: Подготовка репозитория и создание Issues

  1. Создайте новый репозиторий на GitHub с названием lab2-project. Поставьте галочку "Add a README file". Это будет ваша основная (main) ветка.

  2. Склонируйте репозиторий на свой компьютер:

    bash
    git clone https://github.com/ваш-username/lab2-project.git
    cd lab2-project
  3. Создайте два Issue в вашем репозитории на GitHub:

    • Перейдите во вкладку Issues -> New Issue.

    • Issue #1: "Добавить файл calculator.py с функцией сложения"

      • В описании можно добавить: "Необходимо создать файл и реализовать функцию add(a, b)".

    • Issue #2: "Добавить файл greeter.py с функцией приветствия"

      • В описании: "Создать функцию greet(name), которая возвращает строку 'Hello, {name}!'".

    • Для каждого Issue система присвоит уникальный номер (например, #1).


Часть 2: Работа с ветками и Pull Requests

Рабочий процесс (workflow) часто выглядит так: для каждой новой задачи создается отдельная ветка от main, в ней ведется разработка, а затем изменения предлагаются в main через Pull Request.

Задание 1: Реализация функции сложения (Issue #1)

  1. Создайте новую ветку для решения первого Issue. Принято давать веткам понятные имена, например, feat/add-calculator (feat - от feature).

    bash
    git switch -c feat/add-calculator
  2. Создайте файл calculator.py в локальной копии репозитория с следующим содержимым:

    python
    def add(a, b):
        return a + b
  3. Добавьте файл в коммит и закоммитьте изменения. В сообщении коммита укажите номер Issue, чтобы GitHub автоматически связал их.

    bash
    git add calculator.py
    git commit -m "feat(calculator): add add function (#1)"
  4. Отправьте ветку на GitHub:

    bash
    git push -u origin feat/add-calculator
  5. Создайте Pull Request (PR):

    • На GitHub откроется кнопка Compare & pull request для вашей свежезапущенной ветки. Нажмите на нее.

    • В заголовке укажите Feat: Add calculator (#1).

    • В описании подробно распишите, что было сделано.

    • Убедитесь, что в правой части окна PR назначен reviewer (если вы работаете один, можно пропустить) и связан issue (можно написать Closes #1 – тогда при мердже PR Issue закроется автоматически).

    • Нажмите Create pull request.

  6. Смерджите PR:

    • Так как это учебный проект и вы единственный разработчик, вы можете самостоятельно провести код-ревью и нажать кнопку Merge pull request -> Confirm merge.

    • После слияния ветку можно удалить (кнопка Delete branch).

  7. Обновите локальную ветку main:
    Вернитесь в основную ветку и получите изменения с GitHub.

    bash
    git switch main
    git pull origin main

    Теперь у вас локально есть файл calculator.py.

Задание 2: Реализация функции приветствия и возникновение конфликта

  1. Создайте ветку для второго Issue:

    bash
    git switch -c feat/add-greeter
  2. Создайте файл greeter.py:

    python
    def greet(name):
        return f'Hello, {name}!'
  3. Предположим, что пока вы работали, кто-то другой изменил main. Давайте сэмулируем это:

    • Переключитесь обратно в main: git switch main

    • Создайте новый файл, например, README.md, и напишите в нем что-нибудь. Или измените существующий README.md.

    • Сделайте коммит и запушьте изменения:

      bash
      git add README.md
      git commit -m "docs: update readme"
      git push origin main
  4. Вернитесь к своей feature-ветке и попробуйте сделать push:

    bash
    git switch feat/add-greeter
    git push -u origin feat/add-greeter

    Пуш успешен, так как вы работаете в своей ветке.

  5. Создайте Pull Request для ветки feat/add-greeter.

    • GitHub заметит, что ваша ветка отстает от main и может быть показано сообщение о том, что ветки невозможно автоматически смерджить из-за конфликта.

    • GitHub предложит вам разрешить этот конфликт прямо на сайте. Нажмите Resolve conflicts.

  6. Разрешение конфликта:

    • GitHub откроет редактор конфликтов. Конфликт возникает, если одни и те же строки в одних и тех же файлах были изменены в обеих ветках. В нашем сценарии конфликта может и не быть, так как вы меняли разные файлы.

    • Если бы конфликт был, вы бы увидели разметку:

      text
      <<<<<<< feat/add-greeter
      Ваши изменения в ветке feat/add-greeter
      =======
      Изменения в ветке main
      >>>>>>> main
    • Вам нужно вручную отредактировать файл, оставив нужный код, и убрав маркеры <<<<<<<, =======, >>>>>>>.

    • После редактирования нажмите Mark as resolved и затем Commit merge.

  7. Завершите создание/обновление PR и смерджите его.



◄ Лабораторная работа 1. Основы работы с Git
Лекция 1. Основы работы с Git и Github ►
Пропустить Навигация
Навигация
  • В начало

    • Страницы сайта

      • Мои курсы

      • Теги

    • Мои курсы

    • Курсы

      • Осенний семестр

        • Прикладная математика и информатика

        • Фундаментальная информатика и ИТ

          • Probability Theory and Mathematical Statistics

          • Научные Вычислительные Пакеты

          • DataSc101

            • Общее

            • Основы работы с Git и GitHub

              • ЗаданиеЛабораторная работа 1. Основы работы с Git

              • ЗаданиеЛабораторная работа 2. Совместная работа в Git

              • ФайлЛекция 1. Основы работы с Git и Github

            • Работа с Яндекс. Даталенс

            • Анализ данных в Python

            • Тема 4

            • Тема 5

            • Тема 6

            • Тема 7

            • Тема 8

          • NLP (7 семестр)

          • Compiler Development

          • CMVSM

          • АЗПК

          • Frontend

          • ТеорЯП

          • Ruby Eng

          • EngCA&OS

        • Математика, механика

        • Педагогическое образование

        • Магистратура

          • Разработка мобильных приложений и компьютерных игр

        • Аспирантура

        • Вечернее отделение

        • Другое

        • Информатика-Осень-ПМИ-2

        • Информатика-осень-ПМИ-1

        • ИММвс

        • ФИиТ eng 2025

      • Весенний семестр

        • Прикладная математика и информатика

        • Фундаментальная информатика и ИТ

        • Математика, механика

        • Педагогическое образование

        • Магистратура

          • Разработка мобильных приложений и компьютерных игр

        • Аспирантура

        • Вечернее отделение

        • Другое

      • Воскресная компьютерная школа

        • Пользователь компьютера плюс

        • Пользователь прикладных программ

        • Программирование I ступень

        • Программирование II ступень

        • Программирование III ступень

        • Архив

      • Воскресная математическая школа

        • Открытое тестирование РНОМЦ и мехмата ЮФУ - 2025

        • Олимпиадная математическая школа

        • Повышение квалификации

        • Доступная математика

        • Лаборатория математического онлайн-образования мех...

        • Осенняя универсиада

        • Научно-практическая конференция

        • ВМШ

          • ВМШ -2025

        • Летняя олимпиадная математическая школа РНОМЦ и ме...

      • Государственная итоговая аттестация

      • Дополнительное образование

      • Олимпиады

      • Видеолекции

      • Разное

      • Архив курсов

      • Заочная школа мехмата ЮФУ

Служба поддержки сайта
Вы используете гостевой доступ (Вход)
DataSc101
Сводка хранения данных
Скачать мобильное приложение Яндекс.Метрика