# Работа с Git **Основной remote:** `git.kalinamall.ru` (полная копия, включая секреты). **Резерв:** `github.com/PTah/...` (без паролей и токенов). Подробно — [repo-policy.md](repo-policy.md). Репозиторий: [https://git.kalinamall.ru/PapaTramp/reverse-proxy](https://git.kalinamall.ru/PapaTramp/reverse-proxy) ## Установка Git ```bash sudo apt update sudo apt install -y git ``` ## Первое клонирование ```bash cd ~ git clone https://git.kalinamall.ru/PapaTramp/reverse-proxy.git cd reverse-proxy ``` Для **push** с сервера настройте SSH-ключ или PAT (см. ниже). ## Обновление локальной копии ```bash cd ~/reverse-proxy git pull origin main ``` После `git pull` снова скопируйте при необходимости файлы в `/etc/haproxy/` (см. [haproxy-install.md](haproxy-install.md)). ## Как не вводить логин и пароль при каждом `git pull` / `git push` ### Способ 1: SSH-ключ (предпочтительно) 1. Создайте ключ (имя файла можно своё): ```bash ssh-keygen -t ed25519 -C "ubuntu-haproxy" -f ~/.ssh/id_ed25519_kalinamall ``` Парольную фразу можно задать или оставить пустой (на сервере оцените риски). 2. Покажите **публичный** ключ и добавьте его на **git.kalinamall.ru**: профиль → **Settings** → **SSH / GPG Keys** → **Add Key**. ```bash cat ~/.ssh/id_ed25519_kalinamall.pub ``` 3. Проверьте доступ: ```bash ssh -T git@git.kalinamall.ru ``` 4. Клонируйте по **SSH** (или смените URL у уже существующего клона): ```bash git clone git@git.kalinamall.ru:PapaTramp/reverse-proxy.git # уже склонировано по HTTPS — переключение: # git remote set-url origin git@git.kalinamall.ru:PapaTramp/reverse-proxy.git ``` Дальше `git pull` / `git push` идут по SSH **без пароля** (при необходимости один раз вводится только passphrase ключа, если вы её задали; её можно кешировать через `ssh-agent`). ### Способ 2: HTTPS + Personal Access Token (PAT) **git.kalinamall.ru** не принимает обычный пароль от аккаунта для операций `git clone` / `git pull` / `git push` по **HTTPS**. Вместо пароля нужно создать **Personal Access Token (PAT)** и вводить его там, где Git спрашивает пароль. #### Создание токена 1. Войдите на **git.kalinamall.ru** под нужным аккаунтом. 2. Откройте **Settings** (Настройки) → **Applications** (или **Access Tokens**). 3. Создайте новый токен: - **Name** — произвольное имя (например `ubuntu-haproxy-pull`), чтобы потом понимать, зачем токен. - **Expiration** — срок действия (чем короче, тем безопаснее; для сервера часто выбирают ограниченный срок и потом перевыпускают). - **Scopes** — для `pull`/`push` включите минимум **`read:repository`** и **`write:repository`** (или эквивалентные права на репозиторий). 4. **Сразу скопируйте** строку токена — сервер покажет её **один раз**; после ухода со страницы повторно не отобразит. #### Использование PAT в Git на Ubuntu - **Username** (логин): ваш **логин** на git.kalinamall.ru, не e-mail, если Git явно просит username. - **Password**: вставьте **целиком PAT** (не пароль от сайта). Пример первого клонирования по HTTPS: ```bash git clone https://git.kalinamall.ru/PapaTramp/reverse-proxy.git # при запросе: Username = ваш_логин # Password = вставить PAT ``` #### Чтобы не вводить PAT каждый раз Токен хранится **в открытом виде** в `~/.git-credentials` — используйте только на **доверенных** машинах: ```bash git config --global credential.helper store cd ~/reverse-proxy git pull origin main # один раз ввести Username + PAT — дальше подставятся из файла ``` Кеш в памяти на заданное время (секунды), без постоянной записи в файл: ```bash git config --global credential.helper 'cache --timeout=28800' ``` После истечения срока кеша или срока действия токена снова создайте новый PAT и при необходимости обновите сохранённые учётные данные (удалите строчку с `git.kalinamall.ru` из `~/.git-credentials` или снова выполните `git pull` и введите новый токен). ## Два remote: Gitea и GitHub ```bash cd ~/reverse-proxy git remote -v # origin → git@git.kalinamall.ru:PapaTramp/reverse-proxy.git # github → git@github.com:PTah/reverse-proxy.git git push origin main # основной — всегда git push github main # резерв — только без секретов в коммите ``` Если `origin` ещё указывает на GitHub: ```bash git remote rename origin github git remote add origin git@git.kalinamall.ru:PapaTramp/reverse-proxy.git git fetch origin git branch -u origin/main main ```