2014-02-13 3 views
0

У меня есть два филиала: master и feature. Я сделал несколько коммитов в ветке feature, что значительно изменяет структуру каталогов. После этого I checkout 'd ветвь master добавила README.md в корневой каталог. Это единственное изменение, которое я внес в master после создания ветки feature.Слияние филиала до ведущего

Я хочу прямо сейчас сделать это таким образом, что master ветвь «быстро направляется» в feature (то есть все изменения в feature теперь в master), но я также хочу, чтобы включить master «s добавил README.md. Как выполнить эту задачу?

+1

Разве это не означает поведение 'git merge'? Просто 'git checkout master && git merge feature' должен делать то, что вы хотите. Или я чего-то не хватает? – ThanksForAllTheFish

+0

Я предполагаю, что я просто спрашиваю, будет ли по умолчанию 'git merge' включать изменения в 'master'. Поэтому мне не нужна никакая '-strategy = ours' ooption – richizy

ответ

3

Вы ищете git merge <branchname>. Это приведет к слиянию изменений в текущую выделенную ветку. Итак:

git checkout master 
git merge feature 

Так как вы сделали изменения на master, так как вы начали feature ветвь (добавление в README), то это будет сделано, как «слияние совершить». Это означает, что он автоматически сливается, а затем создает фиксацию. Если вы не изменили master, ваша ветка просто переадресовалась бы на текущую фиксацию feature.

1

Используйте git merge команду, которая в соответствии с git help делает это:

Объединяет изменения из названных фиксаций (со времени их истории расходились от текущей ветви) в текущей ветке.

Итак, сделайте свое изменение на master, а затем git merge feature.

1

Это не будет ускоренная перемотка вперед, так как вы внесли изменения в главную ветвь. Вы можете отменить последнее изменение (git reset HEAD^), сохранить его на потом (git stash), объединить свою функцию в (git merge feature), применить изменение сверху (git stash apply; git commit ....). Есть более простые/скрытые способы получить это, но это легко понять. Если добавить файл, это все, что вы сделали, вы можете просто отступить, выполнить слияние и снова добавить файл.

Позаботьтесь, это изменит историю. Если вы опубликовали главную ветвь с изменением, это не будет быстрой перемоткой для кого-то, следующего за репо. Спасибо @SamSullivan, чтобы указать на это.

+0

+1 для быстрой пересылки. – Darkhogg

+0

Обратите внимание, что это, вероятно, смутит других, которые смогли клонировать репозиторий. – Sven

+0

Не похоже, что это сотрудничество, но вы должны действительно отметить, что это вызовет ** большие проблемы **, если вы нажали на удаленное происхождение (например, GitHub), а другие люди потянули ваши изменения. * Не меняйте историю, если вы уже нажали. * – Sam

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