Стратегия, которую я использовал, заключается в использовании двух веток: одной ветки, которая является общедоступной, и второй ветки, которая никогда не покидает вашу машину и которая содержит ваши изменения конфигурации.
Когда вы делаете свою разработку, вы проверяете свою частную ветку, но не фиксируете ее. Как только вы удовлетворены своими изменениями, вы прячете их, проверяете общедоступную ветку, выполняете git stash pop и фиксируете результат. После этого вы возвращаетесь в свою приватную ветку и объединяете свой новый коммит. В результате история будет выглядеть примерно так:
* (HEAD->private) merge
|\
| * (public) commit 3
* | merge
|\|
| * commit 2
* | a change in your local configuration
* | merge
|\|
| * commit 1
* | some private configuration changes
\|
* some base commit
Теперь, если вы нарисуете историю ветки public, вы получите следующее:
* (public) commit 3
* commit 2
* commit 1
* some base commit
Как видите, никакая публичная фиксация никогда не зависит от ваших локальных изменений в конфигурации, поэтому публичная история остается чистой от ваших изменений конфигурации. Тем не менее, ваши изменения конфигурации полностью контролируются версиями, поэтому вы можете вернуться к любому из ваших коммитов слияния и знать, что вы сможете собрать.
Цена за это, конечно, хлопоты с постоянно меняющимися ветками. Поэтому я бы избегал такой конструкции, насколько это возможно, но в некоторых ситуациях она может быть полезна.
person
cmaster - reinstate monica
schedule
16.04.2016
git add? Помогает ли вам с вашей проблемой использование файла.gitignore? - person Enrico   schedule 16.04.2016