Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версияСледующая версияСледующая версия справа и слева | ||
itechnology:git [2022/10/17 23:47] – [Настройка git] jurik_phys | itechnology:git [2024/04/16 21:01] – [Типичные задачи] jurik_phys | ||
---|---|---|---|
Строка 119: | Строка 119: | ||
</ | </ | ||
+ | ==== Восстановить файл из коммита ==== | ||
+ | |||
+ | <code bash># восстановить файл main.cpp из коммита 965ee26 | ||
+ | git checkout 965ee26 -- main.cpp</ | ||
==== Отменить коммит ==== | ==== Отменить коммит ==== | ||
<code bash> | <code bash> | ||
Строка 154: | Строка 158: | ||
==== Именование коммитов ==== | ==== Именование коммитов ==== | ||
- | Рекомендации по именовнаию коммитов ([[https:// | + | Вариант №1 рекомендаций по именованию коммитов ([[https:// |
- | < | + | < |
- | | **fix:** |коммит, | + | | **Fix** |коммит, |
- | | **feat:** | коммит, | + | | **Feat** | коммит, |
- | | **chore:** | коммит, | + | | **Chore** | коммит, |
- | | **refactor:** | этот коммит содержит рефакторинг, | + | | **Refactor** | этот коммит содержит рефакторинг, |
- | | **docs:** | этот коммит изменяет документацию, | + | | **Docs** | этот коммит изменяет документацию, |
- | | **style:** | коммит, | + | | **Style** | коммит, |
- | | **test:** | коммит, | + | | **Test** | коммит, |
- | | **perf:** | коммит, | + | | **Perf** | коммит, |
- | | **ci:** | коммит, | + | | **Ci** | коммит, |
- | | **build:** | это файлы, которые включают файлы сборки и зависимости | + | | **Build** | это файлы, которые включают файлы сборки и зависимости |
- | | **revert:** | коммит, | + | | **Revert** | коммит, |
+ | |||
+ | Вариант №2 ([[https:// | ||
+ | |||
+ | - Отделяйте заголовок от тела пустой строкой. | ||
+ | - Ограничивайте заголовок 50 символами. | ||
+ | - Пишите заголовок с заглавной буквы. | ||
+ | - Не ставьте точку в конце заголовка. | ||
+ | - Используйте повелительное наклонение в заголовке | ||
+ | * Это не повелительное наклонение, | ||
+ | If applied, this commit will **Refactor subsystem X for readability** \\ | ||
+ | If applied, this commit will **Update getting started documentation** \\ | ||
+ | If applied, this commit will **Remove deprecated methods** \\ | ||
+ | If applied, this commit will **Release version 1.0.0**</ | ||
+ | - Переходите на следующую строку в теле на 72 символах. | ||
+ | - В теле отвечайте на вопросы «что» и «почему», | ||
===== Ветки ===== | ===== Ветки ===== | ||
==== Создание локальной ветки ==== | ==== Создание локальной ветки ==== | ||
Строка 174: | Строка 193: | ||
git checkout new_branch | git checkout new_branch | ||
</ | </ | ||
- | ==== Объединение веток ==== | + | ==== Слияние веток ==== |
<code bash> | <code bash> | ||
# переход на ветку в которую будут сливаться изменения | # переход на ветку в которую будут сливаться изменения | ||
Строка 181: | Строка 200: | ||
git merge devel_branch | git merge devel_branch | ||
</ | </ | ||
- | ==== Просмотр всех веток, включая удалённые | + | ==== Список всех веток ==== |
<code bash> | <code bash> | ||
git branch -a | git branch -a | ||
Строка 187: | Строка 206: | ||
==== Удаление ветки ==== | ==== Удаление ветки ==== | ||
- | <code bash> | + | |
- | # удаление удалённой ветки | + | * Локальный репозиторий: |
- | git push server : | + | * Удалённый репозиторий:< |
- | # удаление | + | |
- | git branch | + | ==== Переименование |
- | </ | + | |
+ | * Локальный репозиторий: | ||
+ | * Текущая ветка (-m сокращение от --move):< | ||
+ | * Произвольная ветка: <code bash>git branch -m < | ||
+ | * Удалённый репозиторий: | ||
+ | * Отправка новой ветки | ||
+ | * Удаление | ||
==== Вытянуть удалённую ветку ==== | ==== Вытянуть удалённую ветку ==== | ||
Строка 335: | Строка 361: | ||
===== Метки ===== | ===== Метки ===== | ||
==== Создание меток ==== | ==== Создание меток ==== | ||
- | <code bash> | + | * Аннотированные метки (рекомендуется)<code bash>git tag -a vX.Y -m " |
- | git tag tag_name | + | * Легковесные метки< |
- | </ | + | |
==== Просмотр меток ==== | ==== Просмотр меток ==== | ||
- | <code bash> | + | * Общий список: |
- | git tag | + | * Подробности по тегу " |
- | </ | + | |
==== Отправка меток на сервер | ==== Отправка меток на сервер | ||
- | <code bash> | + | * По умолчанию, |
- | git push origin --tags | + | |
- | </ | + | |
===== Разрешение конфликтов ===== | ===== Разрешение конфликтов ===== | ||
==== Настройка инструментов ==== | ==== Настройка инструментов ==== | ||
- | <code bash> | + | <WRAP indent>< |
- | # установка vimdiff в качестве инструмента разрешения конфликтов | + | |
git config --global merge.tool vimdiff | git config --global merge.tool vimdiff | ||
# не создавать *.orig файлов | # не создавать *.orig файлов | ||
git config --globasl mergetool.keepBackup false | git config --globasl mergetool.keepBackup false | ||
</ | </ | ||
+ | </ | ||
==== Появление конфликта слияния ==== | ==== Появление конфликта слияния ==== | ||
+ | <WRAP indent>< | ||
<code bash> | <code bash> | ||
# установка текущей ветки (master) | # установка текущей ветки (master) | ||
Строка 369: | Строка 392: | ||
git config --globasl mergetool.keepBackup false | git config --globasl mergetool.keepBackup false | ||
</ | </ | ||
+ | </ | ||
** Можно посмотреть детали конфликта: | ** Можно посмотреть детали конфликта: | ||
+ | <WRAP indent>< | ||
<code bash> | <code bash> | ||
git status | git status | ||
Строка 382: | Строка 407: | ||
# | # | ||
</ | </ | ||
+ | </ | ||
==== Запуск процесса разрешения конфликтов ==== | ==== Запуск процесса разрешения конфликтов ==== | ||
+ | <WRAP indent>< | ||
<code bash> | <code bash> | ||
git mergetool | git mergetool | ||
</ | </ | ||
+ | </ | ||
+ | |||
==== Описание vimdiff ==== | ==== Описание vimdiff ==== | ||
Строка 616: | Строка 645: | ||
- | ==== GitHub ==== | ||
- | * Генерация ключей ssh ([[ https:// | ||
==== Настройка git ==== | ==== Настройка git ==== | ||
Строка 661: | Строка 688: | ||
</ | </ | ||
- | {{tag>git}} | + | |
+ | ===== Частые сценарии ===== | ||
+ | <hidden -noprint onHidden=" | ||
+ | |||
+ | * Вариант №1 | ||
+ | * Создание ветки <code bash> | ||
+ | * Верификация созданной ветки <code bash>git branch | ||
+ | ... | ||
+ | BR-NAME | ||
+ | ...</ | ||
+ | * Переключение на созданную ветку< | ||
+ | Переключено на ветку «BR-NAME»</ | ||
+ | * Вариант №2 | ||
+ | * Создание и переключение на ветку одной командой <code bash>git checkout -b BR-NAME | ||
+ | Переключено на новую ветку «DEL_BR» </ | ||
+ | </ | ||
+ | |||
+ | <hidden -noprint onHidden=" | ||
+ | * Список веток:< | ||
+ | * Переключение текущей ветки:< | ||
+ | </ | ||
+ | |||
+ | <hidden -noprint onHidden=" | ||
+ | * Может понадобиться, | ||
+ | </ | ||
+ | |||
+ | <hidden -noprint onHidden=" | ||
+ | * Когда необходимо вернуться к предыдущей версии кода:< | ||
+ | * При необходимости сохранения изменений можно: | ||
+ | - Cоздать ветку:< | ||
+ | - Переключиться на созданную ветку:< | ||
+ | - Сохранить коммит:< | ||
+ | </ | ||
+ | |||
+ | |||
+ | <hidden -noprint onHidden=" | ||
+ | * Когда стало ясно, что сделанные изменения в коде ошибочны< | ||
+ | </ | ||
+ | |||
+ | ===== Работа с GitHub ====== | ||
+ | ==== Первый запуск ==== | ||
+ | |||
+ | === Генерация ключей SSH === | ||
+ | |||
+ | Для работы с сервисом GitHub через терминал по протоколу SSH необходимо один раз сгенерировать ключи шифрования и публичный добавить в аккаунт в раздел " | ||
+ | |||
+ | Процесс генерации ключей описан по [[ https:// | ||
+ | |||
+ | |||
+ | |||
+ | **Проверка соединения с github через ssh**< | ||
+ | The authenticity of host ' | ||
+ | RSA key fingerprint is SHA256: | ||
+ | Are you sure you want to continue connecting (yes/ | ||
+ | |||
+ | === Коммит от имени аккаунта GitHub === | ||
+ | |||
+ | GitHub использует email адрес для ассоциации отправленных коммитов с аккаунтом GitHub. | ||
+ | |||
+ | Чтобы связать коммиты с аккаунтом GitHub: | ||
+ | * [[https:// | ||
+ | * установите тот же самый email в настройках Git или репозитория:< | ||
+ | * создайте какие-нибудь коммиты (git commit -a) и отправьте их (git push) в GitHub. | ||
+ | |||
+ | После этого GitHub признает Вас, и все новые коммиты будут подписаны вашим аккаунтом со ссылкой на него, а не просто именем. Подробности по [[https:// | ||
+ | |||
+ | ==== Типичные задачи ==== | ||
+ | |||
+ | **Создание пустого репозитория: | ||
+ | * создать новый репозиторий на странице << | ||
+ | * клонировать созданный репозиторий на локальной машине:< | ||
+ | |||
+ | **Создание GitHub репозитория под существующий локальный проект: | ||
+ | * создать новый репозиторий на странице << | ||
+ | * войти в каталог с проектом и подключить удалённый репозиторий командой <code bash>git remote add origin git@github.com: | ||
+ | * просмотреть список удалённых репозиториев:< | ||
+ | * а) отправить все ветки на удалённый репозиторий:< | ||
+ | * б) отправить только локальную ветку main:< | ||
+ | |||
+ | **Переименовать или удалить репозиторий** можно на странице: | ||
+ | |||
+ | **Добавление уже созданного на github' | ||
===== Дополнительные материалы git ===== | ===== Дополнительные материалы git ===== | ||
- [[http:// | - [[http:// | ||
Строка 667: | Строка 775: | ||
- [[http:// | - [[http:// | ||
+ | {{tag> |