* Предлагается использовать ветку `main`.
* Пояснен смысл «индекса».
* Примечание про выход из pager´а перенесен туда, где это требуется.
* Уточнены пункты интерфейса Gitea.
* Перефразировано описание того, что локальная ветка разошлась с
  удаленной, потому что «ветка раздвоилась» — это жаргон.
main
Дмитрий Козлюк 2 лет назад
Родитель 7f24253b74
Сommit 50919f9845

@ -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

Загрузка…
Отмена
Сохранить