К содержимому
ИС30

Поиск по сайту

Конспекты, лабы, квизы, ЧаВо и страницы

Войти
Инструментальные средства разработки ПО
ИСРЛаба 1

Лабораторная работа по Git

Ветки, коммиты, история и просмотр изменений на примере репозитория geometric_lib.

Хегай Максим Вилорьевичдо 12 баллов
Дедлайн
пятница, 2 октября
до 23:59
Просрочено на 7 днейДедлайн мягкий: сдать можно и позже, но лучше не тянуть
Войти, чтобы записаться на сдачу
Войдите

Задание

Дана библиотека на Python: Geometric Lib. Её структура:

geometric_lib
├── circle.py
├── square.py
└── docs
    └── README.md

Нужно выполнить ряд действий над репозиторием geometric_lib: создать новую ветку, сделать коммиты, посмотреть историю и изучить внесённые изменения средствами Git.

Порядок выполнения

  1. Склонируйте репозиторий: git clone https://github.com/smartiqaorg/geometric_lib.

  2. Создайте новую ветку с названием new_features_<ваш ID ISU> и переключитесь на неё.

  3. Добавьте в эту ветку новый файл, например с вычислениями для прямоугольника. Название: rectangle.py, содержимое (например):

    rectangle.py
    def area(a, b):
        return a * b
     
    def perimeter(a, b):
        return a + b
  4. Сделайте коммит с сообщением о том, что был добавлен новый файл.

  5. Добавьте ещё один файл в эту ветку, например с вычислениями для треугольника. Название: triangle.py, содержимое (например):

    triangle.py
    def area(a, h):
        return a * h / 2
     
    def perimeter(a, b, c):
        return a + b + c
  6. Исправьте ошибку в вычислении периметра в файле rectangle.py.

  7. Создайте ещё один коммит внутри этой же ветки с сообщением о том, что была исправлена ошибка.

  8. Постройте граф истории всего репозитория с однострочным выводом коммитов.

  9. Постройте граф истории только текущей ветки. В ней должно быть два последних коммита.

  10. Возьмите хэши двух последних коммитов из истории и посмотрите, какие изменения были внесены.

  11. Обычно так не делают на практике, но мы только учимся, поэтому удалите ветку new_features_<ваш ID ISU> без слияния.

Подсказка
Периметр прямоугольника со сторонами a и b равен 2 * (a + b). Именно эту ошибку нужно исправить на шаге 6.

Шпаргалка

Все команды, которые нужны в этой лабе. Вместо <ID> подставляйте свой номер ISU.

Что сделатьКоманда
Склонировать репозиторийgit clone <url>
Посмотреть состояние: какие файлы изменены, что в индексеgit status
Список веток, текущая помечена звёздочкойgit branch
Создать ветку и сразу переключиться на неёgit switch -c <ветка> или git checkout -b <ветка>
Переключиться на существующую веткуgit switch <ветка> или git checkout <ветка>
Добавить файл в индекс (подготовить к коммиту)git add <файл>
Добавить все изменения в индексgit add .
Сделать коммит с сообщениемgit commit -m "сообщение"
Граф истории всего репозитория, по строке на коммитgit log --oneline --graph --all
Граф истории только текущей веткиgit log --oneline --graph
Последние N коммитовgit log --oneline -n N
Что изменил конкретный коммитgit show <хэш>
Разница между двумя коммитамиgit diff <хэш1> <хэш2>
Удалить ветку, слитую в текущуюgit branch -d <ветка>
Удалить ветку принудительно, без слиянияgit branch -D <ветка>
Хэши коммитов
Полный хэш состоит из 40 символов, но Git принимает и сокращённый, обычно хватает первых 7. Именно такой показывает git log --oneline.

Пошаговая инструкция

  1. Клонируем репозиторий и заходим в папку:

    git clone https://github.com/smartiqaorg/geometric_lib
    cd geometric_lib
  2. Создаём ветку и переключаемся на неё. Проверяем, что мы на ней:

    git switch -c new_features_<ID>
    git branch
  3. Создаём rectangle.py с функциями area и perimeter (содержимое из задания). Смотрим, что Git видит новый файл как untracked:

    git status
  4. Добавляем файл в индекс и коммитим:

    git add rectangle.py
    git commit -m "Add rectangle.py with area and perimeter"
  5. Создаём triangle.py с функциями area и perimeter. Коммитить его отдельно не обязательно: по заданию второй коммит должен быть про исправление ошибки, поэтому можно добавить его вместе с фиксом на следующем шаге. Если хотите отдельный коммит, сделайте его так же, как в шаге 4.

  6. Исправляем периметр в rectangle.py:

    rectangle.py
    def perimeter(a, b):
        return 2 * (a + b)

    Разницу с последним коммитом можно посмотреть до добавления в индекс:

    git diff
  7. Добавляем изменения и делаем второй коммит:

    git add rectangle.py triangle.py
    git commit -m "Fix perimeter formula in rectangle.py"
  8. Граф всего репозитория, включая ветки main и удалённые:

    git log --oneline --graph --all
  9. Граф только текущей ветки. Сверху будут два ваших коммита, ниже история main, от которой ветка отпочковалась:

    git log --oneline --graph
  10. Берём хэши двух верхних коммитов из вывода и смотрим изменения каждого:

    git show <хэш второго коммита>
    git show <хэш первого коммита>

    Разницу между ними целиком покажет git diff <хэш первого> <хэш второго>.

  11. Удаляем ветку без слияния. Удалить текущую ветку нельзя, поэтому сначала переключаемся на main. Обычный -d откажется удалять неслитую ветку, нужен -D:

    git switch main
    git branch -D new_features_<ID>
    git branch
Если что-то пошло не так
git status подскажет, на какой вы ветке и что не закоммичено. Если ветку удалили раньше времени, коммиты ещё можно найти через git reflog и вернуть командой git switch -c <ветка> <хэш>.
Закрепить
Пройдите квиз по лабе в конспекте лекции «Системы контроля версий и Git».

Требования

  • Ветка называется new_features_<ваш ID ISU>.
  • В ветке два коммита: добавление нового файла и исправление ошибки в rectangle.py.
  • Сообщения коммитов осмысленные и описывают сделанное.
  • Команды для графа истории, просмотра изменений по хэшам и удаления ветки выполнены самостоятельно.

Материалы

Комментарии0

Пока никто ничего не написал.

Войдите, чтобы оставить комментарий