Files
reverse-proxy/docs/git.md
T
Andrey Lutsenko e7e653a9e8 docs: политика Gitea как основной, GitHub — резерв без секретов.
Два remote, таблица репозиториев и workflow push origin/github.
2026-06-13 16:29:18 +10:00

134 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Работа с 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
```