2014-01-06 5 views
0

Будучи новым для git, у меня есть этот немой вопрос - какой правильный способ использования фишек?Как использовать ветви git

Из того, что я собрал, это, как я думал, что она должна быть использована:

получил некоторые «развивать» ветвь, из которой ветви извлеченная:

"feature-1" 
"feature-2" 
"feature-3" 

т.д.

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

Очевидно, что это неправильный способ перехода к функциям. Но как же тогда?

благодаря

EDIT:

Просто, чтобы проиллюстрировать далее, давайте рассмотрим у нас есть эти файлы в разработке ветви:

fileA (develop) 
fileB (develop) 
fileC (develop) 

Теперь слейте обратно в "функцию-1", который только затрагивает FiLea :

fileA (conflict, theoretically solvable by the recursive/theirs strategy) 
fileB (develop) 
fileC (develop) 

Next merge back "feature-2", который касается только файла:

fileA (overwritten by feature-2!!!) 
fileB (conflict, theoretically solvable by the recursive/theirs strategy) 
fileC (develop) 

Что делать с файломA? Я бы хотел, чтобы он сохранил версию «feature-1».

+0

Это «правильный путь», просто сливайте его правильно, и все будет хорошо. – zerkms

+1

Это может деградировать в дискуссию типа мнения, но я не уверен, чтобы это отметить. Лично я думаю, что «как сделать ветвление в git» - это религиозная дискуссия. Если вы можете переписать его на «мы хотели бы сделать ветвление в git с a-b-c образом, но мы получаем ошибки x-y-z», вы, скорее всего, получите полезные ответы. – shoover

+0

@zerkms Помогите прокомментировать мое редактирование? – kellogs

ответ

3

Похоже, вы не пробовали, о чем вы просите, и просто делаете предположения о том, как это может работать.

Если это так, то ваши предположения неверны. Когда вы объединяете 2 ветви в git - он вычисляет разницу между началом ветви источника и HEAD (или любым другим набором изменений, с которым вы сливаетесь) и применяет его к набору изменений назначения.

Так что после вашего примера - fileA никоим образом не будет изменен при объединении feature-2 только потому, что он не был изменен в feature-2.

Так что проблем нет.

+0

все в порядке ... ну, в моей нужности, кто знает, какие ручки я обернулся и продул прокладки? Просто скажите мне, как я могу увидеть, что изменилось в любом случае после слияния, пожалуйста, – kellogs

+0

@kellogs: 'git diff'? – zerkms

+0

я думаю git diff HEAD^сделал. – kellogs

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