2013-09-28 3 views
8

Я работаю над сайтом (Django) с двумя ветвями: master и dev.Как игнорировать файлы в Git merge?

master - это производственная версия, и здесь не нужно работать. Все изменения должны произойти от объединения ветки dev, как только она будет считаться стабильной.

dev, как вы можете догадаться, является ветвью развития, и все изменения сделаны здесь (и подбраны).

На сервере у меня есть два веб-сайта, один из которых работает (используется master) и еще один частный для разработки, с поддоменом dev, который использует ветвь dev.

Проблема заключается в том, что все файлы конфигурации, статические файлы (изображения и т. Д.) Находятся внутри версии управления, чтобы иметь возможность легко нажимать их на сервер. Но если эти файлы (static, config ...) изменены в dev, чтобы просто отлаживать на сервере, а затем мне нужно объединить с мастером ... Как установить некоторые файлы и директории, которые будут игнорироваться при слиянии dev в мастера?

Я искал, и я нашел некоторые related questions, но они говорят, чтобы использовать .gitattributes с merge=ours. Однако этот подход имеет большое оговорку: он применяет стратегию только в том случае, если файл изменен в двух ветвях, но это не мой случай.

Любые советы о том, как мне продолжать?

+0

@givanse вы поняли, что этот вопрос уже имеет принятый ответ и что вопрос, обозначенный как возможное дублирование, уже упоминался из этого вопроса? – Caumons

+0

Я читал несколько похожих вопросов, должно быть, их смешали в какой-то момент. Я удалил флаг, пожалуйста, подумайте об использовании фактического названия связанного источника. – givanse

ответ

5
 

git checkout master 

git merge --no-log --no-ff --no-commit dev 

git checkout master &ltfiles-you-don't-want-to-merge> 


git add &ltfiles-you-don't-want-to-merge> 

git commit -a 

~~~ Test/Build ~~~ 

git push origin master 


+1

Не могли бы вы немного объяснить, что делают эти команды? – Caumons

+0

# 1 - Слить, но не совершать; затем checkout * the * Files off master branch, тем самым проигнорируйте результат слияния и добавьте их в индекс. Отдых продолжается с регулярным циклом слияния, разрешением конфликтов, сбоями и фиксацией. – forvaidya

+0

Я понял это, но я не понимаю, почему вы сначала проверяете, а затем добавляете те же файлы: S Будет ли достаточно, если я проверю файлы, которые я не хочу совершать, не добавляя их обратно? – Caumons

2

Чтобы быть честным, git звучит неправильно, чтобы решить эту проблему.

В Django предусмотрены отдельные настройки/конфигурации для производственных и производственных сред. Предлагаю вам ознакомиться с этим сообщением: Django: How to manage development and production settings?

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

+0

Вы правы; Я ответил на это скорее как на проблему git, а не на лучшую веб-практику. – forvaidya

+0

Это только разговоры об установках, но я ищу еще ... Как насчет содержимого внутри 'media' и' static' dirs? – Caumons

+0

Используйте различные каталоги для производственных и сред разработки, если вам нужно: https://docs.djangoproject.com/en/dev/howto/static-files/ – ksimons

0

Это было давно. Но я ищу одно и то же решение. Из ниоткуда он просто появляется в моей голове: используйте дополнительный модуль для конфигураций. С дополнительным модулем вы можете иметь несколько ветвей для разных конфигураций.

Используйте символические ссылки для связывания файлов с дополнительным модулем (в подкаталоге).

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