lab02: исправления
* Предлагается использовать ветку `main`. * Пояснен смысл «индекса». * Примечание про выход из pager´а перенесен туда, где это требуется. * Уточнены пункты интерфейса Gitea. * Перефразировано описание того, что локальная ветка разошлась с удаленной, потому что «ветка раздвоилась» — это жаргон.
Этот коммит содержится в:
@@ -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
|
||||
|
||||
Ссылка в новой задаче
Block a user