Тест для слушателей лекции по Git
С чего начать:
Предлагаю 2 варианта:
Вариант 1) Вы регистрируетесь на GitHub, делаете fork этого репозитория. Клонируете репозиторй себе (свой fork, в этот репозиторий push не пройдет). Выполняете все задания. Как только все задания готовы, делаете pull request ветки master.
Как содать fork
https://rustycrate.ru/руководства/2016/03/07/contributing.html#forkaiem-proiekt
Тут можно подсмотреть, как начать работать с github используя TortoiseGit (в середине поста)
https://habrahabr.ru/post/125799/
Как создать pull request
https://rustycrate.ru/руководства/2016/03/07/contributing.html#sozdaiom-pull-request
Вариант 2) Создаете у себя на машине пустой Git репозиторий (В любой пустой директории в контекстном меню выбрать "Git Create repository here"). Выполняете все задания. Пропускаете шаги "Загрузить ветку ааа на сервер" и "Удалить ветку ааа на сервере". Как только все задания готовы, архивируете директорию и присылайте мне на e-mail.
Задание 01
- Добавить в репозиторий файл пустой "MyFirstFile.txt". Зафиксировать изменения. Загрузить ветку "master" на сервер.
Задание 02
- Создать ветку "develop" от ветки "master".
- Создать ветку "feature1" от ветки "develop".
- Создать ветку "feature2" от ветки "develop".
- Загрузить ветку "develop" на сервер.
Задание 03
- Переключится на ветку "feature1". Добавить строку "Hello" в файл "MyFirstFile.txt". Зафиксировать изменения.
- Переключится на ветку "feature2". Добавить строки "H", "e", "l", "l", "o" в файл "MyFirstFile.txt". Зафиксировать изменения.
Задание 04
- Создать ветку "hotfix" от ветки "master" и переключится на нее. Создать файл "HotFixFile.txt" со строкой "HotFix". Зафиксировать изменения.
- Добавить в файл "HotFixFile.txt" новую строку "HotFix2". Зафиксировать изменения. Загружать ветку "hotfix" на сервер не обязательно.
Задание 05
- Сделать Merge ветки "master" с веткой "hotfix". Подсказка: необходимо переключиться на ветку "master" а ветку "hotfix" выбрать для слияния.
- Загрузить ветку "master" на сервер
Задание 06
- Сделать Rebase ветки "develop" на ветку "master". Загрузить ветку "develop" на сервер.
- Сделать Rebase ветки "feature1" на ветку "develop".
- Сделать Rebase ветки "feature2" на ветку "develop".
Задание 07
- Переключиться на ветку "feature1". Добавить файл Feature1.txt в репозиторий. Зафиксировать изменения.
- Переключиться на ветку "feature2". Добавить файл Feature2.txt в репозиторий. Зафиксировать изменения.
Задание 08
- Разработка функции "feature1" окончена. Необходимо сделать Merge изменений из ветки "feature1" в ветку "develop". Подсказка: необходимо переключиться на ветку "develop" а ветку "feature1" выбрать для слияния. Замечание: должено пройти "fast-forward" слияние.
- Загрузить ветку "develop" на сервер.
Задание 09
- Сделать перемещение (rebase) ветки "feature2" на ветку "develop". Решить возникший конфликт, предпочитая изменения ветки feature1
Задание 10
- Удалить ветку "hotfix" локально.
- Удалить ветку "hotfix" на сервере, если она была там создана.
Задание 11
- Создать ветку "release01" от ветки "develop". В ней будет готовится релиз. Переключится на ветку "release01". Создать файл "ReleaseFix.txt" и поместить его в репозиторий. Зафиксировать изменения. Загрузить ветку "release01" на сервер.
Задание 12
- Предположим, что из ветки "release01" был произведен релиз.
- Сделать Merge ветки "master" с веткой "release01". Подсказка: необходимо переключиться на ветку "master" а ветку "release01" выбрать для слияния.
- Поставить Tag "1.0" от ветки "master"
- Загрузить ветки "master", "feature2" на сервер.
- Удалить ветку "feature1" локально.
Задание 13
- Предположим, что последние изменение в ветке "feature2" не нужны. Необходимо откатить их назад сделав revert commit. Подсказка: необходимо переключиться на ветку "feature2", в истории выделить коммит, котоый нужно откатить, в контекстном меню выбрать "Revert change by this commit", Зафиксировать изменения.
- Создать ветку "feature3" из ветки "develop". Добавить в репозиторий 3 файла: "Feature3.txt", "Feature3.1.txt" и "Feature3.2.txt". Зафиксировать изменения. Загрузить ветку "feature3" на сервер.
Задание 14
- Создать ветку "feature4" от ветки "develop" и переключится на нее. Добавить в репозиторий папку "f4" с четырьмя файлами внутри: "Feature1.txt", "HotFix.txt", "GettingStarted.txt", "ReleaseFix.txt". Зафиксировать изменения.
Задание 15
- Разработка функции "feature3" окончена. Необходимо сделать слияние (merge) изменений из ветки "feature3" в ветку "develop". (аналогично заданию 08)
- Загрузить ветку "develop" на сервер.
- Удалить ветку "feature3" локально и на сервере.
Задание 16
- Создать ветку "hotfix2" от ветки "master" и переключится на нее. Добавить в репозиторий папку "hotfix" с файлом "HotFix2.txt" внутри. Зафиксировать изменения.
- Разработка функции "feature2" окончена. Необходимо сделать слияние (merge) изменений из ветки "feature2" в ветку "develop" с опцией "No Fast Forward". Подсказка: необходимо переключиться на ветку "develop" и слить с веткой "feature2". В диалоге слияния указать опцию "No Fast Forward". Замечание: В истории должна появится петля.
- Загрузить ветку "develop" на сервер.
- Удалить ветку "feature2" локально и на сервере.
Задание 17
- Сделать Merge ветки "master" с веткой "hotfix2" с опцией "No Fast Forward". Подсказка: необходимо переключиться на ветку "master" а ветку "hotfix2" выбрать для слияния. В диалоге слияния указать опцию "No Fast Forward". Замечание: В истории должна появится петля.
- Поставить Tag "1.1" от ветки "master"
- Загрузить ветку "master" на сервер.
Задание 18
- Разработка функции "feature4" окончена. Необходимо сделать слияние (merge) изменений из ветки "feature4" в ветку "develop". (аналогично заданию 08)
- Загрузить ветку "develop" на сервер.
- Удалить ветку "feature4".
- Создать ветку "release-candidate2" из ветки "develop". Загрузить ветку "release-candidate2" на сервер
Задание 19
- Удалить ветку "hotfix2".
- Сделать Merge ветки "master" с веткой "release-candidate2". Подсказка: необходимо переключиться на ветку "master" а ветку "release-candidate2" выбрать для слияния. Замечание: В истории должна появится петля.
- Поставить Tag "2.0" от ветки "master"
- Загрузить ветку "master" на сервер.
- Удалить ветку "release-candidate2" локально и на сервере.