У меня есть похожий вариант использования на работе: требуется «нетронутый» домашний каталог на нескольких серверах, где я проверяю процессы, отслеживаю журналы и т. Д. - без необходимости менять каждый из них при добавлении новой команды, псевдоним, сценарий и т. д. Изучив имеющиеся здесь ответы, я решил это следующим образом:
- Создайте на моем настольном компьютере репозиторий 'master', представляющий желаемый каталог $ HOME на удаленном компьютере
- Приведите главное репо в хорошее состояние с нужной мне настройкой (в частности, с каноническим файлом .ssh / authorized_keys)
- На одном удаленном компьютере создайте новое (не пустое) репо в $ HOME
- Вставить мастер в удаленное репо в $ HOME
- Запустить 'git reset --hard' в удаленном репо
Чтобы они были в курсе, я добавилследующий псевдоним git, чтобы помочь мне с обновлением всех моих удаленных рабочих копий в одной команде:
[alias]
pushall = "!for remote in myremote{1..10}; do git push ${remote} master; ssh ${remote} git reset --hard; done"
Теперь, когда подготовлен новый удаленный - я rsync мой каталог $ HOME изсуществующийудаленный к новому, затем добавьте мою новую машину в псевдоним выше.Запуск git pushall после внесения изменений (скажем, после добавления удобного нового скрипта для просмотра журналов) обновит все удаленные рабочие копии первичной копией того, что я хочу, чтобы мой (удаленный) каталог $ HOME был.Больше не нужно обновлять каждый пульт вручную!
Примечание: здесь важны двойные кавычки вокруг псевдонима, иначе точка с запятой укусит вас
Спасибо другимза существующие ответы, которые помогли мне получить эту работу.