2009-11-17 1 views
2

У меня есть продукт, который поставляется в двух версиях, и до сих пор я мог управлять различиями между ними только с использованием флагов компилятора и #ifdefs. Теперь я хочу иметь отдельный значок для каждого продукта. Остальная часть кода, включая источник, ссылающийся на файл значка, остается неизменной. Я хочу сохранить эти потоки развития в ветвях git (скажем, master, pro и lite), но хочу, чтобы ветви pro и lite (a) содержали только разные файлы icon.png и (b) автоматически содержали все изменения, внесенные в любой файлы в главном сервере.Как создать ветку для одного файла?

В Subversion это может быть сделано путем разветвления одного файла (icon.png). Есть ли способ сделать что-то подобное в git?

ответ

2

Просто создайте ветку: git checkout -b branchName и замените значок. Разумеется, git. После этого вы можете работать в родительской ветке (или в главном, если хотите) и использовать git rebase, чтобы вытащить изменения в branchName

+0

Комбинация локальной ветви отслеживания и git rebase была единственной вещью, которая работала точно так, как мне было нужно, спасибо! –

0

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

1

Вы не можете создать ветку для одного файла в Git. Когда вы создаете ветку, вы создаете ветвь для всего репо. (Конечно, в отличие от Subversion, ветвь не создает настоящие копии дисков на диске, поэтому ветви дешевы и не занимают столько дополнительного места, как ветвь Subversion.)

Это звучит как ветка потому что это изменение значка будет длительной ветвью, т. е. изменения будут объединены с мастером, но его изменения не будут объединены назад к мастеру часто, и вы в значительной степени сохраните ветвь вокруг постоянной. В этом случае вы должны настроить ветвь на автоматический трек ведущий ответвление. Вы можете установить это, передав --track опцию git branch или git checkout, при создании новой ветви (дополнительную информацию см. На странице руководства для git branch).

+0

Спасибо за подсказку! Филиалы pro и lite действительно долговечны, и из-за этого я создал их как удаленные (git push origin master: refs/heads/pro), и у меня есть локальные копии, отслеживающие каждый из них. Есть ли способ заставить удаленный pro и lite отслеживать удаленный мастер? –

+0

Нет, но ваш местный филиал может отслеживать мастер, как указано в моем ответе, и эти изменения будут вытеснены при нажатии на ваш пульт. – mipadi

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

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