diff --git a/git.md b/git.md index 3707846..8c0a639 100644 --- a/git.md +++ b/git.md @@ -1,70 +1,142 @@ -## git +# git + +- [git](#git) + - [Отображение статуса репозитория в приглашении](#отображение-статуса-репозитория-в-приглашении) + - [Аутентификация на GitHub с помощью SSH-ключа](#аутентификация-на-github-с-помощью-ssh-ключа) + - [Добавление SSH-ключа на GitHub](#добавление-ssh-ключа-на-github) + - [Работа с удаленным репозиторием](#работа-с-удаленным-репозиторием) + - [Указание конкретного ключа для репозитория](#указание-конкретного-ключа-для-репозитория) + +## Отображение статуса репозитория в приглашении -#### 1. Отображение статуса репозитория в приглашении Это дополнительный функционал, который не требуется для работы с Git, но очень помогает в этом. При работе с Git очень удобно, когда можно сразу определить, находитесь вы в обычном каталоге или в репозитории Git. Кроме того, было бы хорошо понимать статус текущего репозитория. Для этого нужно установить специальную утилиту, которая будет показывать статус репозитория. Для установки утилиты надо скопировать её репозиторий в домашний каталог пользователя, под которым вы работаете: -``` + +```shell cd ~ git clone https://github.com/magicmonty/bash-git-prompt.git .bash-git-prompt --depth=1 ``` + А затем добавить в конец файла .bashrc такие строки: -``` + +```shell GIT_PROMPT_ONLY_IN_REPO=1 source ~/.bash-git-prompt/gitprompt.sh ``` + Для того, чтобы изменения применились, перезапустить bash: -``` + +```shell exec bash ``` + Теперь, если вы находитесь в обычном каталоге, приглашение выглядит стандартно, а если в каталоге, в котором инициализирован репозиторий git, это будет указано. -#### 2. Аутентификация на GitHub с помощью SSH-ключа -###### Генерация нового SSH-ключа (используйте e-mail, который привязан к GitHub): -``` +[вверх](#git) + +*** + +## Аутентификация на GitHub с помощью SSH-ключа + +Генерация нового SSH-ключа (используйте e-mail, который привязан к GitHub): + +```shell ssh-keygen -t rsa -b 4096 -C "github_email@gmail.com" ``` + На всех вопросах достаточно нажать Enter (более безопасно использовать ключ с passphrase, но можно и без, если нажать Enter при вопросе, тогда passphrase не будет запрашиваться у вас постоянно при операциях с репозиторием). Запуск SSH-агента (пропускаем на Windows): -``` + +```shell eval "$(ssh-agent -s)" ``` + Добавить ключ в SSH-агент (пропускаем на Windows): -``` + +```shell ssh-add ~/.ssh/id_rsa ``` -###### Добавление SSH-ключа на GitHub + +[вверх](#git) + +*** + +## Добавление SSH-ключа на GitHub + Для добавления ключа надо его скопировать. Например, таким образом можно отобразить ключ для копирования: -``` + +```shell cat ~/.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 ``` + Вывод должен быть таким: -``` + +```shell $ ssh -T git@github.com 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 ``` + После внесения измений в локальные файлы проверяем состояние локального репозитория -``` + +```shell git status ``` + Необходимо добавить файлы в отслеживаемые -``` + +```shell git add <имя файла> ``` + Создадим коммит -``` + +```shell git commit -m "описание изменений" ``` + Синхронизируем локальный и удаленный репозитории -``` + +```shell 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) + +***