diff --git a/labs/lab02/README.md b/labs/lab02/README.md index ecaaf0e..ec14c67 100644 --- a/labs/lab02/README.md +++ b/labs/lab02/README.md @@ -101,10 +101,25 @@ git init ``` К приглашению командной строки добавилось `(master)`: имя текущий ветви Git. -Ветвь `master` используется по умолчанию. + +Git с настройками по умолчанию печатает длинное сообщение-подсказку, +строки которого начинаются с `hint:`. +Суть сообщения в том, что долгое время ветка по умолчанию называлась `master`, +но по известным причинам разработчики Git планируют изменить это, +поэтому сразу предлагается поменять имя ветки и дается команда для этого. + +**Самостоятельно.** +Поменяйте имя ветки на `main` при помощи предложенной команды. + +**Примечание.** +Многие проекты продолжают успешно использовать `master`, +чтобы не менять сложившиеся процессы. +Мы предлагаем использовать `main`, во-первых, чтобы попробовать лишнюю команду, +во-вторых, потому что такой станет ветка по умолчанию в будущем. Git хранит свои данные в каталоге `.git` в той папке, где сделано `git init`. Ее можно увидеть командой `ls -A`. +Каталог является скрытым, поэтому в «Проводнике» его по умолчанию не видно. Заходить в `.git` и что-либо делать там не нужно. Если удалить этот каталог, репозитарий будет безвозвратно утерян. @@ -179,7 +194,9 @@ git status **В отчете** нужно пояснить, что означает каждая строка вывода этой команды. -Добавим файл `main.cpp` в отслеживаемые (в индекс): +Добавим файл `main.cpp` в индекс, то есть в набор изменений, который войдет +в очередной коммит. Так как этот файл ранее не отслеживался Git, +то говорят, что файл «заносят под Git» или «начинают отслеживать». ``` sh git add main.cpp @@ -344,7 +361,12 @@ git commit -a -m "..." ### Работа с журналом репозитария -Журнал репозитария показывает команда `git log`. У нее много опций, например: +Журнал репозитария показывает команда `git log`. + +Если лог изменений длинный, `git log` показывает текст с прокруткой. +Чтобы выйти из этого режима, нажмите `q`. + +У команды `git log` много опций, например: * `git log --stat` показывает файлы, измененные в коммитах. * `git log --oneline --decorate` показывает коммиты компактно (`--oneline`), @@ -357,9 +379,6 @@ git commit -a -m "..." команды показывают хэш сокращенно — краткий вариант тоже будет восприниматься командами Git, которые принимают хэш. -Если лог изменений длинный, `git log` показывает текст с прокруткой. -Чтобы выйти из этого режима, нажмите `q`. - Попробуйте каждую из приведенных команд. **В отчете** подробно опишите, что показывается `git log --stat` для последнего коммита. @@ -382,7 +401,7 @@ git commit -a -m "..." Просмотрим последний коммит тремя эквивалентными способами: 1. `git show HEAD` (текущий) -2. `git show master` (по имени ветви) +2. `git show main` (по имени ветви) 3. `git show d2e8af` (по хэшу нужного коммита) Для просмотра предыдущего коммита можно либо записать его хэш, @@ -484,7 +503,7 @@ git checkout HEAD -- main.cpp ### Регистрация на сервере Зарегистрируйтесь на [Git УИТ](http://uit.mpei.ru/git) -под именем вида `KozlyukDA` (своя фамилия и инициалы, как почта МЭИ). +под именем вида `KozliukDA` (своя фамилия и инициалы, как почта МЭИ). Пароль придумайте самостоятельно. @@ -563,8 +582,8 @@ cat ~/.ssh/id_rsa.pub **Самостоятельно.** Скопировать открытый ключ (текст) и добавить в список открытых ключей своей учетной записи. Это делается в настройках (меню пользователя -в правом верхнем углу, пункт *Settings*), раздел *SSH and GPG keys,* -кнопка *New SSH key.* +в правом верхнем углу, пункт *Settings*), раздел *SSH/GPG keys,* +панель *Manage SSH keys,* кнопка *Add key.* Если работа выполняется в компьютерном классе, закрытый ключ будет утерян после выхода из учетной записи (или выключении компьютера). Проще всего @@ -578,9 +597,12 @@ cat ~/.ssh/id_rsa.pub ### Отправка проекта на сервер Создайте репозитарий под названием `cs-lab02`. -Для этого нужно нажать на `+` слева вверху и выбрать `New Repository`. -Не нужно добавлять в репозитарий файл `README.md` или лицензию, -если предлагаются такие галочки. +Для этого нужно нажать на знак «плюс» справа вверху и выбрать *New Repository.* + +* В поле *Repository Name* нужно ввести `cs-lab02`. +* Галочку *Make repository private* нужно снять, + чтобы репозитарий был виден всем пользователям. +* Остальные настройки нужно оставить по умолчанию. После создания пустого репозитария будет показана страница с инструкциями, как настроить связь с удаленным хранилищем: @@ -659,11 +681,11 @@ git fetch git log --oneline --decorate --all --graph ``` -Как можно видеть, ветка `master` отстает на один коммит от ветки -`origin/master` (версии ветки `master` из удаленного репозитария под названием +Как можно видеть, ветка `main` отстает на один коммит от ветки +`origin/main` (версии ветки `main` из удаленного репозитария под названием `origin`, то есть на сервере). -Продвиньте ветку `master` к скачанной версии: +Продвиньте ветку `main` к скачанной версии: ``` sh git pull --ff-only @@ -709,11 +731,13 @@ cout << "A + B = " << a + b << '\n' «От лица Боба» загрузите коммиты из удаленного хранилища и отобразите историю всех веток — результат нужно представить **в отчете.** -Можно видеть, что ветка `master` раздвоилась. Бобу нужно переместить свой -коммит поверх коммита Алисы, то есть поверх `origin/master`: +Можно видеть, что ветка `main` локального репозитария +разошлась с веткой `origin/main`, то есть с веткой `main` на сервере. +Бобу нужно переместить свой коммит поверх коммита Алисы, +то есть поверх `origin/main`: ``` sh -git rebase origin/master +git rebase origin/main ``` Однако эта команда завершается с ошибкой, сообщающей о конфликте в `main.cpp`. @@ -766,17 +790,17 @@ git checkout double Замените тип переменных `a` и `b` на `double` и сделайте коммит. -Переключитесь на ветку `master`: +Переключитесь на ветку `main`: ``` sh -git checkout master +git checkout main ``` **Самостоятельно.** -Синхронизируйте ветку `master` «на машине Алисы» с сервером. +Синхронизируйте ветку `main` «на машине Алисы» с сервером. Просмотрите историю всех веток и занесите результат **в отчет.** -Слейте ветку `double` в `master`: +Слейте ветку `double` в `main`: ``` sh git merge double