Хранение конфигурационных файлов на удалённом репозитории

Задача: у нас есть два компьютера (ноутбук и ПК), в каждом из которых есть некие конфигурационные файлы (.vimrc, .zshrc, mpv.conf и т.п.). Нам нужно хранить эти файлы и синхронизировать с удалённым репозиторием, чтобы в любой момент их можно восстановить или развернуть на новой системе. Так как у нас два устройства, то их нужно как-то разграничить. Это можно сделать несколькими способами, самый удобный – это воспользоваться ветками – создать отдельную ветку для ПК и для ноутбука.

Что потребуется: git, аккаунт на github или любой другой хостинговой платформе

Реализация:

Создадим репозиторий, назовём его my-configs

Клонируем созданный репозиторий:

git clone https://github.com/bernd32/my-configs.git

cd /my-config

Так как сейчас мы работаем с ПК, то создадим и перейдем в отельную ветку pc, где будут отдельно храниться конф. файлы ПК:

git checkout -b pc

Теперь нужно добавить нужные файлы. Чтобы не редактировать конфигурационные файлы по два раза (находящиеся в директории локального репозитория (далее – ДЛР), и находящиеся на своем непосредственном месте (чаще всего это  домашняя директория /~)), то создадим симлинки на эти файлы.

К примеру, нам нужно синхронизировать .zshrc и .vimrc. Добавляем эти файлы в ДЛР

mv ~/.vimrc ~/my-configs

mv ~/.zshrc ~/my-configs

Создаем симлинки этих файлов в то место, откуда они были перемещены:

ln -s ~/my-configs/.vimrc ~/.vimrc

ln -s ~/my-configs/.zshrc ~/.zshrc

Пушим и коммитим файлы на удаленную ветку pc:

git add .
git commit -m "Initial PC config"
git push -u origin pc

Повторяем все те же действия на втором устройстве (в моем случае это ноутбук), но не забываем создать ветку laptop и пушить файлы в ветку laptop:

git add .
git commit -m "Initial laptop config"
git push -u origin laptop

Объединение общих конфигураций

Если есть общие конфигурации на ПК и ноутбуке которые нужно расшарить между собой, то это можно сделать это путем слияния (merge). К примеру, мы внесли в ветке pc те изменение, которые должны быть применены также и к ветке laptop, замержить эти изменение можно таким образом:

git checkout laptop
git merge pc

git push origin laptop

Регулярная синхронизация

Регулярное обновление каждой машины изменениями из удаленного репозитория и отправление (push) новых изменений совершается примерно такими  командами:

Синхронизация с удаленной веткой:

git pull origin <имя_ветки>

Сохранение изменений в удаленной ветке репозитория:

git add .
git commit -m "Update config files"

git push origin <имя_ветки>