master
Долгий Артём 2024-08-09 12:32:25 +03:00
parent 89cdbc3644
commit f987ef8aaa
1 changed files with 93 additions and 21 deletions

114
git.md
View File

@ -1,70 +1,142 @@
## git # git
- [git](#git)
- [Отображение статуса репозитория в приглашении](#отображение-статуса-репозитория-в-приглашении)
- [Аутентификация на GitHub с помощью SSH-ключа](#аутентификация-на-github-с-помощью-ssh-ключа)
- [Добавление SSH-ключа на GitHub](#добавление-ssh-ключа-на-github)
- [Работа с удаленным репозиторием](#работа-с-удаленным-репозиторием)
- [Указание конкретного ключа для репозитория](#указание-конкретного-ключа-для-репозитория)
## Отображение статуса репозитория в приглашении
#### 1. Отображение статуса репозитория в приглашении
Это дополнительный функционал, который не требуется для работы с Git, но очень помогает в этом. При работе с Git очень удобно, когда можно сразу определить, находитесь вы в обычном каталоге или в репозитории Git. Кроме того, было бы хорошо понимать статус текущего репозитория. Для этого нужно установить специальную утилиту, которая будет показывать статус репозитория. Для установки утилиты надо скопировать её репозиторий в домашний каталог пользователя, под которым вы работаете: Это дополнительный функционал, который не требуется для работы с Git, но очень помогает в этом. При работе с Git очень удобно, когда можно сразу определить, находитесь вы в обычном каталоге или в репозитории Git. Кроме того, было бы хорошо понимать статус текущего репозитория. Для этого нужно установить специальную утилиту, которая будет показывать статус репозитория. Для установки утилиты надо скопировать её репозиторий в домашний каталог пользователя, под которым вы работаете:
```
```shell
cd ~ cd ~
git clone https://github.com/magicmonty/bash-git-prompt.git .bash-git-prompt --depth=1 git clone https://github.com/magicmonty/bash-git-prompt.git .bash-git-prompt --depth=1
``` ```
А затем добавить в конец файла .bashrc такие строки: А затем добавить в конец файла .bashrc такие строки:
```
```shell
GIT_PROMPT_ONLY_IN_REPO=1 GIT_PROMPT_ONLY_IN_REPO=1
source ~/.bash-git-prompt/gitprompt.sh source ~/.bash-git-prompt/gitprompt.sh
``` ```
Для того, чтобы изменения применились, перезапустить bash: Для того, чтобы изменения применились, перезапустить bash:
```
```shell
exec bash exec bash
``` ```
Теперь, если вы находитесь в обычном каталоге, приглашение выглядит стандартно, а если в каталоге, в котором инициализирован репозиторий git, это будет указано. Теперь, если вы находитесь в обычном каталоге, приглашение выглядит стандартно, а если в каталоге, в котором инициализирован репозиторий git, это будет указано.
#### 2. Аутентификация на GitHub с помощью SSH-ключа [вверх](#git)
###### Генерация нового SSH-ключа (используйте e-mail, который привязан к GitHub):
``` ***
## Аутентификация на GitHub с помощью SSH-ключа
Генерация нового SSH-ключа (используйте e-mail, который привязан к GitHub):
```shell
ssh-keygen -t rsa -b 4096 -C "github_email@gmail.com" ssh-keygen -t rsa -b 4096 -C "github_email@gmail.com"
``` ```
На всех вопросах достаточно нажать Enter (более безопасно использовать ключ с passphrase, но можно и без, если нажать Enter при вопросе, тогда passphrase не будет запрашиваться у вас постоянно при операциях с репозиторием). На всех вопросах достаточно нажать Enter (более безопасно использовать ключ с passphrase, но можно и без, если нажать Enter при вопросе, тогда passphrase не будет запрашиваться у вас постоянно при операциях с репозиторием).
Запуск SSH-агента (пропускаем на Windows): Запуск SSH-агента (пропускаем на Windows):
```
```shell
eval "$(ssh-agent -s)" eval "$(ssh-agent -s)"
``` ```
Добавить ключ в SSH-агент (пропускаем на Windows): Добавить ключ в SSH-агент (пропускаем на Windows):
```
```shell
ssh-add ~/.ssh/id_rsa ssh-add ~/.ssh/id_rsa
``` ```
###### Добавление SSH-ключа на GitHub
[вверх](#git)
***
## Добавление SSH-ключа на GitHub
Для добавления ключа надо его скопировать. Для добавления ключа надо его скопировать.
Например, таким образом можно отобразить ключ для копирования: Например, таким образом можно отобразить ключ для копирования:
```
```shell
cat ~/.ssh/id_rsa.pub cat ~/.ssh/id_rsa.pub
``` ```
После копирования надо перейти на GitHub. Находясь на любой странице GitHub, в правом верхнем углу нажмите на картинку вашего профиля и в выпадающем списке выберите «Settings». В списке слева надо выбрать поле «SSH and GPG keys». После этого надо нажать «New SSH key» и в поле «Title» написать название ключа (например «Home»), а в поле «Key» вставить содержимое, которое было скопировано из файла ~/.ssh/id_rsa.pub После копирования надо перейти на GitHub. Находясь на любой странице GitHub, в правом верхнем углу нажмите на картинку вашего профиля и в выпадающем списке выберите «Settings». В списке слева надо выбрать поле «SSH and GPG keys». После этого надо нажать «New SSH key» и в поле «Title» написать название ключа (например «Home»), а в поле «Key» вставить содержимое, которое было скопировано из файла ~/.ssh/id_rsa.pub
Чтобы проверить, всё ли прошло успешно, попробуйте выполнить команду: Чтобы проверить, всё ли прошло успешно, попробуйте выполнить команду:
```
```shell
ssh -T git@github.com ssh -T git@github.com
``` ```
Вывод должен быть таким: Вывод должен быть таким:
```
```shell
$ ssh -T git@github.com $ ssh -T git@github.com
Hi username! You've successfully authenticated, but GitHub does not provide shell access. Hi username! You've successfully authenticated, but GitHub does not provide shell access.
```
#### 3. Работа с удаленным репозиторием
Клонируем удаленный репозиторий в локальную папку
``` ```
[вверх](#git)
***
## Работа с удаленным репозиторием
Клонируем удаленный репозиторий в локальную папку
```shell
git clone ssh://git@github.com/pyneng/online-2-natasha-samoylenko.git git clone ssh://git@github.com/pyneng/online-2-natasha-samoylenko.git
``` ```
После внесения измений в локальные файлы проверяем состояние локального репозитория После внесения измений в локальные файлы проверяем состояние локального репозитория
```
```shell
git status git status
``` ```
Необходимо добавить файлы в отслеживаемые Необходимо добавить файлы в отслеживаемые
```
```shell
git add <имя файла> git add <имя файла>
``` ```
Создадим коммит Создадим коммит
```
```shell
git commit -m "описание изменений" git commit -m "описание изменений"
``` ```
Синхронизируем локальный и удаленный репозитории Синхронизируем локальный и удаленный репозитории
```
```shell
git push git push
``` ```
[вверх](#git)
***
## Указание конкретного ключа для репозитория
1. Клонировать репозиторий с указанием необходимого ключа
```shell
git clone -c core.sshCommand="/usr/bin/ssh -i /home/da2001/.ssh/sape_a.dolgiy" ssh://git@gitlab.sapient.ru:7999/devops/salt.git
```
2. Указать в настройках локального репозитория необходимый ключ
```shell
git config --local core.sshCommand="/usr/bin/ssh -i /home/da2001/.ssh/sape_a.dolgiy"
```
[вверх](#git)
***