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