Найти тему
39 подписчиков

По работе часто приходится подключаться к разным серверам, и все удобство в виде алиазов (короткие или удобные имена для программ и команд) и настроек остаются на уютном ноутбуке, а на удаленном сервере их нет. В итоге сделал себя git хранилище для dotfiles (персональные настройки пользователя для консоли и многих программ в линуксе сохраняются в его домашней директории в файлах начинающихся с точки, то есть имя файла .bashrc будет звучать как дот баш эр си, отсюда и dotfiles или дотфайлы). То есть имея файлы с настройками в таком репозитории на gitlab, я за две команды могу скачать и применить свои настройки среды на сервере.

Делается это буквально в пару этапов:
1. Готовим онлайн репозиторий. gitalab.com это или github.com или hub.mosk.ru создаем приватный репозиторий (в настройках могу содержаться весьма чувствительные данные, которые не стоит вываливать в сеть на всеобщее обозрение). Репозиторий лучше сделать пустым - убрать галку что в нем нужно создать README.MD.
2. Создаем —bare репозиторий для своих файлов. Так как все файлы в домашней директории, то в её корне и создадим репозиторий. При этом создадим алиаз для команды git, чтобы было удобно этим репозиторием дотфайлов управлять. И этот алиаз сохраним в скрипте инициализации bash, чтобы его можно было при новом входе в систему использовать.

git init --bare $HOME/.dotfiles
alias config='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
config config --local status.showUntrackedFiles no
echo "alias config='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'" >> $HOME/.bashrc
Кстати, в третьей строке мы сразу используем только что созданный алиаз и вместо команды git config используем config config. А настройка локального репозитория "status.showUntrackedFiles no" нужна нам чтобы все файлы которые мы не будем отслеживать не отображались в выводе команды config status (опять алиаз использовали)
3. Добавляем файлы настроек к репозиторий и отправляем в удаленный репозиторий созданный в первом пункте
config status
config add .bashrc
config commit -m "Add bashrc"
config push
4. Точнее пытаемся отправить, потому что потребуется для локального репозитория указать адрес удаленного в который убудут отправляться сведения. На странице нового репозитория будет информация вида:
Push an existing folder

cd existing_folder
git init --initial-branch=main
git remote add origin git@gitlab.com:kpa39l/test.git
git add .
git commit -m "Initial commit"
git push --set-upstream origin main
и как раз в третьей команде, как раз после инициализации репозитория и есть адрес удаленного, токо помним, что вместо git в начале команды должен стоять наш алиаз config.

Файлы и коммит мы уже добавили в пункте 3, так что сразу пушим "config push —set-upstream origin main".

5. Чтобы установить конфиги на новом машине нужно на пару шагов больше (там же уже будут существующие конфиги и что-то с ними нужно будет сделать - удалить/сохранить), если интересно напишу отдельным постом.


#git #linux #dotfiles
2 минуты