diff --git a/docs/git.md b/docs/git.md index a319cf5..e255aa2 100644 --- a/docs/git.md +++ b/docs/git.md @@ -1,9 +1,14 @@ # Работа с Git -**Основной remote:** `git.kalinamall.ru` (полная копия, включая секреты). -**Резерв:** `github.com/PTah/...` (без паролей и токенов). Подробно — [repo-policy.md](repo-policy.md). +Три **SSH**-remote (без HTTPS и без `origin`): -Репозиторий: [https://git.kalinamall.ru/PapaTramp/reverse-proxy](https://git.kalinamall.ru/PapaTramp/reverse-proxy) +| Remote | Gitea / GitHub | URL | +|--------|----------------|-----| +| **kalinamall** | корпоративный (основной) | `ssh://git@git.kalinamall.lan:2222/PapaTramp/reverse-proxy.git` | +| **home** | домашний Gitea | `ssh://git@git.papatramp.lan:2222/PapaTramp/reverse-proxy.git` | +| **github** | резерв без секретов | `git@github.com:PTah/reverse-proxy.git` | + +Публичные имена `git.kalinamall.ru` / `git.papatramp.ru` — те же хосты через SSH `:2222` (см. `~/.ssh/config`). Подробно — [repo-policy.md](repo-policy.md). ## Установка Git @@ -16,24 +21,26 @@ sudo apt install -y git ```bash cd ~ -git clone https://git.kalinamall.ru/PapaTramp/reverse-proxy.git +git clone ssh://git@git.kalinamall.lan:2222/PapaTramp/reverse-proxy.git cd reverse-proxy ``` -Для **push** с сервера настройте SSH-ключ или PAT (см. ниже). +На Windows после [Setup-SshAccess](https://git.kalinamall.ru/PapaTramp/Answer.and.other.shit) (или локально): + +```powershell +Set-GitRemotes.ps1 -Repo reverse-proxy +``` ## Обновление локальной копии ```bash cd ~/reverse-proxy -git pull origin main +git pull kalinamall main ``` После `git pull` снова скопируйте при необходимости файлы в `/etc/haproxy/` (см. [haproxy-install.md](haproxy-install.md)). -## Как не вводить логин и пароль при каждом `git pull` / `git push` - -### Способ 1: SSH-ключ (предпочтительно) +## SSH-ключ 1. Создайте ключ (имя файла можно своё): @@ -41,93 +48,30 @@ git pull origin main ssh-keygen -t ed25519 -C "ubuntu-haproxy" -f ~/.ssh/id_ed25519_kalinamall ``` - Парольную фразу можно задать или оставить пустой (на сервере оцените риски). - -2. Покажите **публичный** ключ и добавьте его на **git.kalinamall.ru**: профиль → **Settings** → **SSH / GPG Keys** → **Add Key**. +2. Добавьте **публичный** ключ в Gitea: профиль → **Settings** → **SSH / GPG Keys**. ```bash cat ~/.ssh/id_ed25519_kalinamall.pub ``` -3. Проверьте доступ: +3. Проверка: ```bash - ssh -T git@git.kalinamall.ru + ssh -T git@git.kalinamall.lan + ssh -T git@git.papatramp.lan ``` -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: +## Push / pull ```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 # резерв — только без секретов в коммите +git push kalinamall main # основной +git push home main # копия на papatramp +git push github main # резерв — без секретов в коммите ``` -Если `origin` ещё указывает на GitHub: +Ветка **main** по умолчанию отслеживает **kalinamall/main**. -```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 -``` +## HTTPS + PAT (legacy) + +Для `https://git.kalinamall.ru/...` Git Credential Manager может открывать браузер. **Не используйте** — только SSH remotes выше. diff --git a/docs/repo-policy.md b/docs/repo-policy.md index 34557c3..6395274 100644 --- a/docs/repo-policy.md +++ b/docs/repo-policy.md @@ -16,10 +16,10 @@ ## Правила -### git.kalinamall.ru (origin) +### git.kalinamall.ru (remote **kalinamall**) - Полный исходный код, конфиги, allowlist-файлы, пароли, токены, `.env`, ключи, keystore — **всё, что нужно для развёртывания внутри сети**. -- Сюда делается обычная разработка: `git push origin main`. +- Сюда делается обычная разработка: `git push kalinamall main`. - Доступ только из корпоративной сети / allowlist. ### GitHub (remote `github`) @@ -37,35 +37,38 @@ ## Настройка remotes (один раз на машине) -```bash -# origin — Gitea (основной) -git remote add origin git@git.kalinamall.ru:PapaTramp/ИМЯ-РЕПО.git -# если origin уже указывает на GitHub: -# git remote rename origin github -# git remote add origin git@git.kalinamall.ru:PapaTramp/ИМЯ-РЕПО.git +Только **SSH**, три имени (скрипт `Set-GitRemotes.ps1` из Answer.and.other.shit): -# резерв на GitHub -git remote add github git@github.com:PTah/ИМЯ-НА-GITHUB.git +```powershell +cd C:\Users\papat\Projects\reverse-proxy +..\Answer.and.other.shit\scripts\ssh-setup\Set-GitRemotes.ps1 -Repo reverse-proxy +``` + +Или вручную: + +```bash +git remote add kalinamall ssh://git@git.kalinamall.lan:2222/PapaTramp/reverse-proxy.git +git remote add home ssh://git@git.papatramp.lan:2222/PapaTramp/reverse-proxy.git +git remote add github git@github.com:PTah/reverse-proxy.git +git branch -u kalinamall/main main ``` Проверка: ```bash git remote -v -# origin git@git.kalinamall.ru:PapaTramp/... (fetch/push) -# github git@github.com:PTah/... (fetch/push) +ssh -T git@git.kalinamall.lan +ssh -T git@git.papatramp.lan ``` ## Ежедневный workflow ```bash -# 1. Работа и пуш в основное хранилище git add ... git commit -m "..." -git push origin main - -# 2. Резерв на GitHub — только после проверки, что нет секретов -git push github main +git push kalinamall main # основной (корпоративный Gitea) +git push home main # копия на papatramp +git push github main # резерв — только без секретов ``` Для **seaca** и любых репозиториев без `github` remote — только шаг 1.