-
Создайте пустой репозиторий на сервисе github.com (или gitlab.com, или bitbucket.com). Создал репрезиторий.
-
Выполните инструкцию по созданию первого коммита на странице репозитория, созданного на предыдещем шаге.
cd workspace/projects/lab02 git remote add origin https://github.com/ammobaggage/lab02.git
-
Создайте файл
hello_world.cpp
в локальной копии репозитория (который должен был появиться на шаге 2). Реализуйте программу Hello world на языке C++ используя плохой стиль кода. Например, после заголовочных файлов вставьте строкуusing namespace std;
.touch hello_world.cpp nano hello_world.cpp
-
Добавьте этот файл в локальную копию репозитория.
git add .
-
Закоммитьте изменения с осмысленным сообщением.
git commit -m "Первая версия программы" git push origin main
-
Изменитьте исходный код так, чтобы программа через стандартный поток ввода запрашивалось имя пользователя. А в стандартный поток вывода печаталось сообщение
Hello world from @name
, где@name
имя пользователя.nano hello_world.cpp
-
Закоммитьте новую версию программы.
git add . git commit -m "Улучшен код программы"
-
Запуште изменения в удалёный репозиторий.
git push origin main
-
Проверьте, что история коммитов доступна в удалёный репозитории. Проверил и убедился, что все коммиты видно.
Note: Работать продолжайте с теми же репоззиториями, что и в первой части задания.
-
В локальной копии репозитория создайте локальную ветку
patch1
.git branch patch1 git checkout patch1
-
Внесите изменения в ветке
patch1
по исправлению кода и избавления отusing namespace std;
.nano hello_world.cpp git commit -am "Патч для программы. Теперь хороший стиль кода" git push origin patch1
-
Проверьте, что ветка
patch1
доступна в удалёный репозитории. -
Создайте pull-request
patch1 -> master
. -
В локальной копии в ветке
patch1
добавьте в исходный код комментарии.nano hello_world.cpp
-
commit, push.
git commit -am "Создан pull request и добавлен комментарий в код." git push origin patch1
-
Проверьте, что новые изменения есть в созданном на шаге 5 pull-request
-
В удалённый репозитории выполните слияние PR
patch1 -> master
и удалите веткуpatch1
в удаленном репозитории. -
Локально выполните pull.
git pull origin main
-
С помощью команды git log просмотрите историю в локальной версии ветки
main
.
Note: Работать продолжайте с теми же репоззиториями, что и в первой части задания.
-
Создайте новую локальную ветку
patch2
.git pull origin main git branch patch2 git checkout patch2
-
Измените code style с помощью утилиты clang-format. Например, используя опцию
-style=Mozilla
.clang-format -style=Mozilla -i hello_world.cpp
-
commit, push, создайте pull-request
patch2 -> master
.git commit -am "Добавлен код стайл Mozilla" git push origin patch2 pic 6
-
В ветке main в удаленном репозитории измените комментарии, например, расставьте знаки препинания, переведите комментарии на другой язык.
Изменил
-
Убедитесь, что в pull-request появились конфликтны.
-
Для этого локально выполните pull + rebase (точную последовательность команд, следует узнать самостоятельно). Исправьте конфликты.
git pull --rebase origin main nano hello_world.cpp git rebase --continue
-
Сделайте force push в ветку
patch2
git push origin patch2 --force-with-lease
-
Убедитель, что в pull-request пропали конфликты.
-
Вмержите pull-request
patch2 -> master
.
##UPD
Я не увидел, что накосячил с кодом, поэтому в самом конце добавил нормальную компилируемую версию.