Лабораторная работа по Git
Ветки, коммиты, история и просмотр изменений на примере репозитория geometric_lib.
Задание
Дана библиотека на Python: Geometric Lib. Её структура:
geometric_lib
├── circle.py
├── square.py
└── docs
└── README.mdНужно выполнить ряд действий над репозиторием geometric_lib: создать новую ветку, сделать коммиты, посмотреть историю и изучить внесённые изменения средствами Git.
Порядок выполнения
-
Склонируйте репозиторий:
git clone https://github.com/smartiqaorg/geometric_lib. -
Создайте новую ветку с названием
new_features_<ваш ID ISU>и переключитесь на неё. -
Добавьте в эту ветку новый файл, например с вычислениями для прямоугольника. Название:
rectangle.py, содержимое (например):rectangle.py def area(a, b): return a * b def perimeter(a, b): return a + b -
Сделайте коммит с сообщением о том, что был добавлен новый файл.
-
Добавьте ещё один файл в эту ветку, например с вычислениями для треугольника. Название:
triangle.py, содержимое (например):triangle.py def area(a, h): return a * h / 2 def perimeter(a, b, c): return a + b + c -
Исправьте ошибку в вычислении периметра в файле
rectangle.py. -
Создайте ещё один коммит внутри этой же ветки с сообщением о том, что была исправлена ошибка.
-
Постройте граф истории всего репозитория с однострочным выводом коммитов.
-
Постройте граф истории только текущей ветки. В ней должно быть два последних коммита.
-
Возьмите хэши двух последних коммитов из истории и посмотрите, какие изменения были внесены.
-
Обычно так не делают на практике, но мы только учимся, поэтому удалите ветку
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 <ветка> |
git log --oneline.Пошаговая инструкция
-
Клонируем репозиторий и заходим в папку:
git clone https://github.com/smartiqaorg/geometric_lib cd geometric_lib -
Создаём ветку и переключаемся на неё. Проверяем, что мы на ней:
git switch -c new_features_<ID> git branch -
Создаём
rectangle.pyс функциямиareaиperimeter(содержимое из задания). Смотрим, что Git видит новый файл как untracked:git status -
Добавляем файл в индекс и коммитим:
git add rectangle.py git commit -m "Add rectangle.py with area and perimeter" -
Создаём
triangle.pyс функциямиareaиperimeter. Коммитить его отдельно не обязательно: по заданию второй коммит должен быть про исправление ошибки, поэтому можно добавить его вместе с фиксом на следующем шаге. Если хотите отдельный коммит, сделайте его так же, как в шаге 4. -
Исправляем периметр в
rectangle.py:rectangle.py def perimeter(a, b): return 2 * (a + b)Разницу с последним коммитом можно посмотреть до добавления в индекс:
git diff -
Добавляем изменения и делаем второй коммит:
git add rectangle.py triangle.py git commit -m "Fix perimeter formula in rectangle.py" -
Граф всего репозитория, включая ветки
mainи удалённые:git log --oneline --graph --all -
Граф только текущей ветки. Сверху будут два ваших коммита, ниже история
main, от которой ветка отпочковалась:git log --oneline --graph -
Берём хэши двух верхних коммитов из вывода и смотрим изменения каждого:
git show <хэш второго коммита> git show <хэш первого коммита>Разницу между ними целиком покажет
git diff <хэш первого> <хэш второго>. -
Удаляем ветку без слияния. Удалить текущую ветку нельзя, поэтому сначала переключаемся на
main. Обычный-dоткажется удалять неслитую ветку, нужен-D:git switch main git branch -D new_features_<ID> git branch
git status подскажет, на какой вы ветке и что не закоммичено. Если ветку удалили раньше времени, коммиты ещё можно найти через git reflog и вернуть командой git switch -c <ветка> <хэш>.Требования
- Ветка называется
new_features_<ваш ID ISU>. - В ветке два коммита: добавление нового файла и исправление ошибки в
rectangle.py. - Сообщения коммитов осмысленные и описывают сделанное.
- Команды для графа истории, просмотра изменений по хэшам и удаления ветки выполнены самостоятельно.

Комментарии0
Пока никто ничего не написал.
Войдите, чтобы оставить комментарий