2015-03-05 3 views
0

У меня уже есть asked a question, но я думаю, что это слишком сложно, и я смог упростить свой вопрос, чтобы гарантировать повторную запись. Пожалуйста, обратитесь к этой ссылке, если вы хотите увидеть реальный пример моей проблемы!Сделать «неурожайным» совершает в ветке git

Вопрос в том, возможно ли для меня сделать особый тип git-фиксации на моей ветке, который никогда не будет явно слит в будущих слияниях отрасли.

Вариант использования, если у меня есть проект, который имеет несколько различных конфигураций makefile (по одному для каждой платформы), и я хочу сделать работу над несколькими из них. Таким образом, работа будет разбросана по веткам (ветви, относящиеся к платформе ...), и я хочу объединить ветви без слияния, сдувающего конфигурации.

+0

Мне не очень нравится это предложение, и я его не пробовал, но как только слияние коммитов в другую ветвь и задание стратегии слияния, так что он ничего не делает, кроме создания фиксации с двумя родители? Таким образом, фиксация была «объединена», и дальнейшие слияния не должны также переносить эту фиксацию. – stwalkerster

+0

Наличие коммита, которое не сливается, похоже на наличие фиксации, которая на самом деле не является частью истории ветвей: на самом деле это не имеет смысла с точки зрения SCM. Я считаю, что в этой ситуации лучше всего удалить их из своего репо и предоставить инструкции по настройке make-файла для каждой платформы. Вы можете сохранить копию каждого из них в папке, чтобы сделать это проще. – Jon

+0

@stwalkerster Я пробовал это, и в основном то, что я делал, было 'git merge --no-commit --no-ff', и я редактировал изменения еще в (что мне нужно было сохранить), однако при слиянии THIS эти руководства изменения, которые я выполнил, все еще слиты в другую сторону. Так что это действительно не помогает. В принципе, Git слишком хорош, не забывая изменений кода. –

ответ

0

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

Похоже, что «правильный» способ заключается в том, чтобы в основном настроить cmake или другие средства настройки и создания различий в платформе, используя тот же начальный код семени (который находится в репозитории исходного кода).

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

Между тем в моем проекте я собираюсь использовать команды оболочки (uname и т. Д.) Для выполнения предикации, поэтому я больше не буду пытаться поднять эту ответственность на git и оставить ее в Makefile.