Эксперт по сдаче вступительных испытаний в ВУЗах
практической работы № 1: «Системы контроля версий»
по дисциплине «Технологии разработки программных приложений»
Часть 1 (1 неделя). Основные команды git
Пройдите курс на сайте
https://githowto.com/ (до раздела 22). Обязательно должны быть выполнены следующие действия:
- Установите и настройте клиент git на своей рабочей станции.
- Создайте локальный репозиторий и добавьте в него несколько файлов.
- Внесите изменения в один из файлов.
- Проиндексируйте изменения и проверьте состояние.
- Сделайте коммит того, что было проиндексировано в репозиторий. Добавьте к коммиту комментарий.
- Измените еще один файл. Добавьте это изменение в индекс git. Измените файл еще раз. Проверьте состояние и произведите коммит проиндексированного изменения. Теперь добавьте второе изменение в индекс, а затем проверьте
состояние с помощью команды
Сделайте коммит второго изменения.
- Просмотрите историю коммитов с помощью команды
Ознакомьтесь с
параметрами команды и используйте некоторые из них для различного формата отображения истории коммитов.
- Верните рабочий каталог к одному из предыдущих состояний.
- Изучите, как создавать теги для коммитов для использования в будущем.
- Отмените некоторые изменения в рабочем каталоге (до и после индексирования).
- Отмените один из коммитов в локальном репозитории.
Часть 2 (2 неделя). Ветвление и разрешение конфликтов
Продолжите проходить курс на сайте
https://githowto.com/ (начиная с раздела 23)
Опционально — пройти курс на сайте https://learngitbranching.js.org/? locale=ru_RU.
Часть 3 (3 неделя). Системы управления репозиториями
- Создайте аккаунт на GitHub.
- Создайте репозиторий на GitHub
- Создайте новый локальный репозиторий с несколькими файлами на рабочей станции и загрузите его содержимое на GitHub.
- Чтобы избежать ввода логина и пароля, создайте SSH-ключ для авторизации. 5. Создайте в репозитории новую ветку. Произведите в ней несколько изменений
и слейте с веткой master.
- Выполните цепочку действий в репозитории, согласно варианту. Вариант совпадает с <остатком от деления номера студента в списке минус 1 на 15 + 1> (16-й студент выполняет задание 1 варианта).
| № варианта |
Задание |
| 1 |
1) Клонируйте непустой удаленный репозиторий на локальную машину 2) Создайте новую ветку и выведите список всех веток
3) Произведите 3 коммита в новой ветке
4) Выгрузите изменения в удаленный репозиторий
5) Откатите ветку обратно на 2 коммита (в том числе в удаленном репозитории)
6) Выведите в консоли различия между веткой master и новой веткой 7) Слейте новую ветку с master при помощи merge |
| 2 |
1) Клонируйте непустой удаленный репозиторий на локальную машину 2) Создайте новую ветку и выведите список всех веток
3) Произведите коммит в ветке master
4) Произведите 3 коммита в новой ветке в разные файлы 5) Выгрузите изменения в удаленный репозиторий
6) Откатите ветку обратно на 2 коммита (в том числе в удаленном репозитории) |
| |
7) Выведите в консоли различия между веткой master и новой веткой 8) Перебазируйте новую ветку на master |
| 3 |
1) Клонируйте непустой удаленный репозиторий на локальную машину 2) Создайте тег указывающий на последний коммит в ветке master
3) Создайте новую ветку и выведите список всех веток 4) Произведите 3 коммита в новой ветке
5) Выгрузите все изменения в удаленный репозиторий
6) Откатите ветку к созданному тегу (в том числе в удаленном репозитории)
7) Выведите в консоли различия между веткой master и новой веткой |
| 4 |
1) Клонируйте непустой удаленный репозиторий на локальную машину 2) Создайте новую ветку и выведите список всех веток
3) Произведите 3 коммита в новой ветке в разные файлы 4) Выгрузите изменения в удаленный репозиторий
5) Откатите в новой ветке предпоследний коммит (в том числе в удаленном репозитории)
6) Выведите в консоли различия между веткой master и новой веткой 7) Слейте новую ветку с master при помощи merge |
| 5 |
1) Клонируйте непустой удаленный репозиторий на локальную машину 2) Создайте новую ветку и выведите список всех веток
3) Произведите 3 коммита в новой ветке в разные файлы 4) Выгрузите изменения в удаленный репозиторий
5) Произведите revert предпоследнего коммита в новой ветке
6) Выведите в консоли различия между веткой master и новой веткой 7) Слейте новую ветку с master при помощи merge |
| 6 |
1) Клонируйте непустой удаленный репозиторий на локальную машину 2) Создайте новую ветку и выведите список всех веток
3) Произведите 3 коммита в новой ветке в новых файлах 4) Выгрузите изменения в удаленный репозиторий
5) Произведите какие-нибудь изменения в файле который существует в ветке master, но не коммитьте их
6) Выполните git stash
7) Переключитесь на ветку master |
| |
8) Выполните git stash pop
9) Выведите в консоли различия между веткой master и новой веткой 10) Слейте новую ветку с master при помощи merge |
| 7 |
1) Клонируйте непустой удаленный репозиторий на локальную машину 2) Создайте две новых ветки и выведите список всех веток
3) Произведите 3 коммита в первой ветке
4) Переместите (cherry pick) первый коммит во вторую ветку 5) Выгрузите изменения в удаленный репозиторий
6) Выведите в консоли различия между веткой master и новыми ветками 7) Слейте обе ветки с master при помощи merge |
| 8 |
1) Клонируйте непустой удаленный репозиторий на локальную машину 2) Создайте две новых ветки и выведите список всех веток
3) Произведите по 2 коммита в обоих ветках в новых файлах 4) Выгрузите изменения в удаленный репозиторий
6) Выведите в консоли различия между веткой master и обоими ветками 7) Слейте одну ветку с master при помощи merge
8) Подлейте master ко второй ветке
9) Выведите в консоли различия между веткой master и обоими ветками |
| 9 |
1) Клонируйте непустой удаленный репозиторий на локальную машину 2) Создайте новую ветку и выведите список всех веток
3) Произведите 5 коммитов в новой ветке в разные файлы 4) Выгрузите изменения в удаленный репозиторий
5) Произведите revert 2-го и 4-го коммита в новой ветке
6) Выведите в консоли различия между веткой master и новой веткой 7) Слейте новую ветку с master при помощи merge |
| 10 |
1) Клонируйте непустой удаленный репозиторий на локальную машину 2) Создайте новую ветку и выведите список всех веток
3) Произведите 3 коммита в новой ветке в разные файлы 4) Выгрузите изменения в удаленный репозиторий
5) Произведите какие-нибудь изменения в файле который существует в ветке, но не коммитьте их
6) Внесите эти изменения в последний коммит (amend) |
| |
7) Выведите в консоли различия между веткой master и новой веткой 8) Слейте новую ветку с master при помощи merge |
| 11 |
1) Клонируйте непустой удаленный репозиторий на локальную машину 2) Создайте новую ветку и выведите список всех веток
3) Произведите 3 коммита в новой ветке в разные файлы 4) Выгрузите изменения в удаленный репозиторий
5) Добейтесь того, чтобы эти три изменения были представлены одним коммитом
6) Выведите в консоли различия между веткой master и новой веткой 7) Слейте новую ветку с master при помощи merge |
| 12 |
1) Клонируйте непустой удаленный репозиторий на локальную машину 2) Создайте новую ветку и выведите список всех веток
3) Произведите 3 коммита в новой ветке в разные файлы 4) Выгрузите изменения в удаленный репозиторий
5) Произведите какие-нибудь изменения в файле, который существует в ветке, но не коммитьте их
6) Выведите в консоли различия между новой веткой и рабочей директорией
7) При помощи команд git приведите файл из п.5 к состоянию до изменения
8) Слейте новую ветку с master при помощи merge |
| 13 |
1) Клонируйте непустой удаленный репозиторий на локальную машину 2) Создайте новую ветку и выведите список всех веток
3) Произведите 3 коммита в новой ветке с одним и тем же файлов 4) Выгрузите изменения в удаленный репозиторий
5) Выведите в консоли информацию о том, в каком коммите была изменена каждая строка файла
6) Слейте новую ветку с master при помощи создания pull request-а |
| 14 |
1) Клонируйте непустой удаленный репозиторий на локальную машину 2) Создайте новую ветку и выведите список всех веток
3) Создайте новый файл в репозитории, но не коммитьте его
3) Произведите 3 коммита в новой ветке в другие файлы, не добавляя данный файл в git
4) Выведите в консоли результат git status |
| |
5) Добавьте файл из п.3 в .gitignore и закоммитьте это в репозиторий 6) Выгрузите изменения в удаленный репозиторий
7) Выведите в консоли различия между веткой master и новой веткой 8) Слейте новую ветку с master при помощи merge |
| 15 |
1) Клонируйте непустой удаленный репозиторий на локальную машину 2) Создайте новую ветку и выведите список всех веток
3) Создайте новый файл в репозитории, но не коммитьте его
3) Произведите 3 коммита в новой ветке в другие файлы, не добавляя данный файл в git
4) Выведите в консоли результат git status
5) При помощи команд git очистите рабочую директорию от untracked файла
6) Выгрузите изменения в удаленный репозиторий
7) Выведите в консоли различия между веткой master и новой веткой 8) Слейте новую ветку с master при помощи merge |
- Выполните общее задание:
1) Сделайте форк репозитория в соответствии с вариантом (вариант является <остатком от деления номера студента по списку минус 1 на 10 + 1>), также можно использовать ваш репозиторий из предыдущего задания
2) Склонируйте его на локальную машину
3) Создайте две ветки branch1 и branch2 от последнего коммита в master’е
4) Проведите по 3 коммита в каждую из веток, которые меняют один и тот же кусочек файла
5) Выполните слияние ветки branch1 в ветку branch2, разрешив конфликты при этом
6) Выгрузите все изменения во всех ветках в удаленный репозиторий 7) Проведите еще 3 коммита в ветку branch1
8) Склонируйте репозиторий еще раз в другую директорию
9) В новом клоне репозитории сделайте 3 коммита в ветку branch1
10) Выгрузите все изменения из нового репозитория в удаленный репозиторий
11) Вернитесь в старый клон с репозиторием, выгрузите изменения командой pull с опцией —force
12) Получите все изменения в новом репозитории
Варианты:
| № варианта |
Репозиторий |
| 1 |
https://github.com/liamg/traitor |
| 2 |
https://github.com/google/model_search |
| 3 |
https://github.com/gto76/python-cheatsheet |
| 4 |
https://github.com/ripienaar/free-for-dev |
| 5 |
https://github.com/pystardust/ytfzf |
| 6 |
https://github.com/airbnb/javascript |
| 7 |
https://github.com/kettanaito/naming-cheatsheet |
| 8 |
https://github.com/Sairyss/domain-driven-hexagon |
| 9 |
https://github.com/react-native-camera/react-native-camera |
| 10 |
https://github.com/spring-projects/spring-petclinic |
Ссылка на первоисточник:
http://www.amgpgu.ru/