Задача: у нас есть два компьютера (ноутбук и ПК), в каждом из которых есть некие конфигурационные файлы (.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 <имя_ветки>