2016-04-29 5 views
4

Я установил репозиторий dotfiles, размещенный на удаленном сервере и используемый на разных машинах. Для некоторых вещей я хотел бы иметь индивидуальные конфигурации, например. переменные среды различаются между машинами.dotfile управление для разных машин с гибкими ветвями разумно?

Я подумал, что было бы неплохо иметь дополнительную ветвь для машинно-зависимых изменений, так, например, у меня есть ветви server, notebook, desktop, все они основаны на master с небольшими индивидуальными изменениями (от 1 до нескольких фиксаций). Теперь проблема в том, что я хочу, чтобы эти индивидуальные изменения были применены сверху, очевидно. Поэтому я бы изменил master для общих изменений и rebase локальный ответ desktop. Но используя rebase, я больше не могу push для удаленного репо. И я хочу, чтобы это было как резервное копирование и синхронизация, и, возможно, также может случиться так, что я хочу изменить ветвь машины А, фактически работая на машине В.

Разумеется, поддерживать единственную ветвь для каждая машина или есть лучшее решение? Как я могу применить локальные изменения сверху, как и для rebase, но не потеряв способность push? Большое спасибо

+0

Будет ли возможность хранить все машинно-зависимой переменной в одном файле, и есть git hook распространяет значения, когда это необходимо? –

ответ

-1

Вы можете также включить файлы в gitconfig

[include] 
    path = ~/my_std_git_config 

Таким образом, вы могли бы иметь один общий файл со стандартным материалом. И несколько файлов gitconfig для ваших разных хостов.

Затем связывайте только один из конкретных gitconfigs хоста в ~/.gitconfig. Храните все файлы в одной ветке.

i.E. в вашем репозитории:

common_gitconfig 
laptop_gitconfig 
server_gitconfig 

Включите common_gitconfig в laptop_ * и server_ *. Ссылка на ваш laptop_gitconfig на ~/.gitconfig на вашем ноутбуке. На вашей серверной ссылке server_gitconfig.

1

Ваш подход к нескольким отраслям звучит разумно и является решением некоторых проблем, которые у меня были с машинным сценарием (работа/личный).

Проблема, которую вы описываете, заключается в том, что после выполнения операции git rebase вы не можете изменять настройки.

Причина, по которой вы не можете нажать, - это потому, что git rebase перезаписывает историю. Она удаляет ваши ветви коммиты, синхронизируется с мастером и повторно применяет коммиты на вершине:

enter image description here

Почему бы не объединить вместо перебазирования?

Слиянием (git merge master) вы не будете переписывать историю, и у вас не будет проблем с нажатием на ваш пульт.

Я рекомендую вам прочитать статью this, в ней объясняется разница между слиянием и ребасом.

Если вам действительно необходимо/хотите перебазироваться, вы должны заставить толкать изменения в пульте дистанционного управления, запустив git push --force <remote_name> <branch_name>

 Смежные вопросы

  • Нет связанных вопросов^_^