Автор работал над проектом cani и пользовался разными git-remotes. Один из них — сервер, который стоит у него дома. Вот как он это настроил.
Допустим, на сервере есть папка с проектом /home/user/projects/cani, в ней уже есть каталог .git/. Из этой папки можно создать bare-репозиторий — он подходит для удалённой работы и не плодит конфликтов. Команда: git clone --bare /home/user/projects/cani — так появляется /home/user/bares/cani.git.
Добавить этот bare-репозиторий как remote можно несколькими способами. На той же машине: git remote add local /home/user/bares/cani.git. С другой машины — через SSH: git remote add local ssh://USER@MACHINE:/home/user/bares/cani.git. Чтобы не указывать ветку каждый раз, можно закрепить main как ветку по умолчанию для remote local: git remote set-branches local main.
После этого пушим: без конфига — git push ssh://USER@MACHINE:/home/user/bares/cani.git, если remote уже настроен — просто git push local. Тянем изменения: без дефолтной ветки — git pull local main, с дефолтной — git pull local. Синтаксис ssh://USER@MACHINE можно заменить на любой локально настроенный SSH-конфиг.
Автору очень понравилось работать с локальным remote. Особенно когда офсайт-репозитории работают нестабильно. В его случае офсайт — это небольшой community-сервер, который корпоративные скраперы просто забивают трафиком. Локальный remote сделал работу с этим сервером гораздо спокойнее: пуш — мгновенный, а копия у друга в онлайне всё равно остаётся. И никакого big tech.