Стаття з'явилася завдяки Flavio Wuensche
Чому саме так
-
Ніяких допоміжних інструментів
-
Не використовуються сімлінки
-
Усі зміни автоматично відслідковуються git-ом
-
Просто використовуйте інші бранчі, якщо у вас інші настройки у профілі чи ОС
-
Легко "поширити" якийсь файл на декілька конфігурацій
Попередження
Я вже був "обнулив" декілька раз свої настройки тільки тому, що виконав якусь команду git не подумавши, що саме вона зараз поміняє або видалить з комп'ютера. Особливість саме цього варіанту трекінгу файлів, що git сінхронізує або видаляє файли, щоб привести їх до відповілності з знімком. Тому будьте обережні, особливо при перших коммітах та пулах. I пам'ятайте - я вас попередив, тому вся відповідальність на Вас!
GO!
Якщо ви починаєте з нуля...
-
Додаємо нову git директорію, де будуть відслідковуватись ваші файли
$ git init --bare $HOME/.dotfiles -
Створюємо аліас
dotfilesy .bash_aliases, що знадобиться нам даліalias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME' -
Git не повинен відслідковувати не індексовані файли
$ dotfiles config --local status.showUntrackedFiles no
Використання
Взагалі, використання виглядає якось так
$ dotfiles status
$ dotfiles add .vimrc
$ dotfiles commit -m "Add vimrc"
$ dotfiles add .bashrc
$ dotfiles commit -m "Add bashrc"
$ dotfiles push
Чарівно, правда? Магія GIT!
Якщо треба відновити якусь конфігурацію
Git повинен бути встановлений
-
клонуємо репозиторій
$ git clone --bare https://github.com/USERNAME/dotfiles.git $HOME/.dotfiles -
Додаємо новий алиас до .bash_aliases
alias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME' -
Вибираемо потрібний бранч
$ dotfiles checkout LinuxOS -
"Заливаємо" файли конфігураціі
$ dotfiles pull
Ще раз, обережно з "тупим" копіюванням та виконанням git комманд у такій конфігураціі!!
Коли потрібна нова конфігурація
Взагалі, для мене це найвідповідальніший варіант. Коли наступає момент і ми розумієм, що потрібна нова конфігурація, ми вже маєм набор ключових конфігураційних файлів, яких нам не потрібно переписувати ни при яких обставинах. І, навіть більше, нам не потрібно ніякої історіі змін. Але ж ім'я, наприклад, .bashrc - це типове ім'я 90% конфігурацій. І ми ні в яякому разі, ні при яких розкладах не повинні нічого переписати. Я рекомендую наступне. Це може здатися overhead-ом, але я тепер роблю саме так.
-
Додаємо новий алиас до .bash_aliases
alias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME' -
клонуємо репозиторій, але в іншу папку!
$ git clone --bare https://github.com/USERNAME/dotfiles.git $HOME/.dotfiles_new -
переходимо до директоріі
$ cd ~/.dotfiles_new -
Додаємо новий бранч взагалі без історіі
$ git checkout --orphan new-config -
Очищуємо індекс і "working tree" (Не обов'язково. Виходячи з конкретних обставин)
$ git rm -rf . -
додаємо пустий комміт
$ git commit --allow-empty -m "Initial Commit" -
Публікуємо новий бранч на git сервері
$ git push -
Тепер можем "запускати" dotfiles механизм
$ cd ~ $ mv ~/.dotfiles_new/.git ~/.dotfiles
Важливо! Ключ
--git-dirповинен вказувати саме на.gitфолдер
-
Git не повинен відслідковувати не індексовані файли
$ dotfiles config --local status.showUntrackedFiles no
Далі, додаємо любі файли, що нам потрібні через аліас dotfiles, як завжди
Дякую, якщо дочитали цю статтю, і якщо вона здалася Вам корисною.