Как создать ветку для одного файла? - PullRequest
2 голосов
/ 18 ноября 2009

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

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

Ответы [ 3 ]

2 голосов
/ 18 ноября 2009

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

1 голос
/ 18 ноября 2009

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

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

0 голосов
/ 18 ноября 2009

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

...