e7e653a9e8
Два remote, таблица репозиториев и workflow push origin/github.
134 lines
5.9 KiB
Markdown
134 lines
5.9 KiB
Markdown
# Работа с 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
|
||
```
|