64 lines
2.5 KiB
Markdown
64 lines
2.5 KiB
Markdown
# Git Mirror Zip
|
|
|
|
Клонировать git-репозиторий полностью (все ветки, теги, refs) и упаковать в zip с максимальным сжатием. Или восстановить бэкап в целевой репозиторий.
|
|
|
|
## Требования
|
|
|
|
- **Git** — установлен и доступен в PATH
|
|
- Никаких дополнительных зависимостей
|
|
|
|
## Файлы
|
|
|
|
| Файл | ОС | Описание |
|
|
|------|----|----------|
|
|
| `git-mirror-zip.sh` | Linux | Скачать репо в zip |
|
|
| `git-mirror-zip-macos.sh` | macOS | Скачать репо в zip |
|
|
| `git-mirror-zip.bat` | Windows (CMD) | Скачать репо в zip |
|
|
| `git-mirror-zip.ps1` | Windows (PowerShell) | Скачать репо в zip |
|
|
| `git-restore-zip.sh` | Linux | Восстановить из zip |
|
|
| `git-restore-zip-macos.sh` | macOS | Восстановить из zip |
|
|
| `git-restore-zip.bat` | Windows (CMD) | Восстановить из zip |
|
|
| `git-restore-zip.ps1` | Windows (PowerShell) | Восстановить из zip |
|
|
|
|
## Бэкап
|
|
|
|
```bash
|
|
# Linux / macOS
|
|
chmod +x git-mirror-zip.sh
|
|
./git-mirror-zip.sh https://github.com/user/repo.git my-repo.zip
|
|
|
|
# Windows CMD
|
|
git-mirror-zip.bat https://github.com/user/repo.git my-repo.zip
|
|
|
|
# Windows PowerShell
|
|
.\git-mirror-zip.ps1 https://github.com/user/repo.git my-repo.zip
|
|
```
|
|
|
|
Второй аргумент (имя zip) опциональный, по умолчанию `repo.zip`.
|
|
|
|
## Восстановление
|
|
|
|
```bash
|
|
# Linux / macOS
|
|
chmod +x git-restore-zip.sh
|
|
./git-restore-zip.sh my-repo.zip https://git.example.com/user/repo.git
|
|
|
|
# Windows CMD
|
|
git-restore-zip.bat my-repo.zip https://git.example.com/user/repo.git
|
|
|
|
# Windows PowerShell
|
|
.\git-restore-zip.ps1 my-repo.zip https://git.example.com/user/repo.git
|
|
```
|
|
|
|
Скрипт распакует архив, переключит remote на целевой репозиторий и выполнит `git push --mirror`, тем самым восстановив все ветки, теги и refs.
|
|
|
|
## Что внутри архива
|
|
|
|
`git clone --mirror` копирует:
|
|
- Все ветки (локальные и удалённые)
|
|
- Все теги (лёгкие и аннотированные)
|
|
- Все refs (notes, stash и т.д.)
|
|
- Полную историю коммитов
|
|
|
|
Временная директория `.tmp_git_mirror` / `.tmp_restore_mirror` создаётся при работе и автоматически удаляется после завершения.
|