2015-04-24 2 views
1

Если я создаю ветку в Git, всегда ли можно объединить родительскую ветку обратно в мою рабочую ветку, чтобы собирать изменения, которые проверили другие люди?Если я создаю ветку в Git, можно ли объединить родительскую ветку обратно в мою рабочую ветку?

Предположим, я начинаю с ветки master и feature.

Если я feature проверил и создать новую ветку:

feature> git checkout -b moreFeatureWork 

Тогда, если я посвящаю все свои изменения и объединить свою работу в особенности:

moreFeatureWork> git commit -a -m "Commit my changes" 
feature> git merge --no-ff moreFeatureWork 

Затем, позволяет сказать, На следующей неделе мне понадобилось больше недели на этой ветке. Я позволил ему сидеть неделю, а тем временем многие другие люди объединили свою работу в feature.

Можно ли это сделать, чтобы обновить мою ветку с последними изменениями?

moreFeatureWork> git merge feature 

Или это было бы проблематично?

+0

Да, конечно. Почему есть какие-то сомнения? – kan

ответ

0

Как я понял, вы не изменили свою ветку moreFeatureWork? Вы просто хотите «обновиться» до того, как начнете работать?

Если все пойдет хорошо, и люди добавили вещи только в ваш филиал feature, ваше предлагаемое слияние должно сделать только перемотку вперед и сохранить moreFeatureWork в актуальном состоянии.

Лично же я предпочел бы moreFeatureWork> git rebase feature
Таким образом, вы можете потенциально даже обновить moreFeatureWork ветку, когда вы сделали некоторые изменения на нем.

Примечание: при условии, что ваша ветка moreFeatureWork была полностью объединена с feature, вы можете, конечно, просто удалить эту ветку и создать новую ветку.

feature> git branch -d moreFeatureWork 
feature> git checkout -b moreFeatureWork2 

отрасль или что-то в этом роде.

2

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

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

Если вы хотите сохранить историю чистой, вы должны избрать rebase что филиал на вершине твоего вместо:

git rebase <feature> 

Вы можете получить слияние конфликтов, но они не будут отличаться, чем если бы вы были слиты два филиала в.

+1

Я никогда раньше не использовал rebase. Спасибо, что выделили эту возможность для меня. :-) – djangofan

+0

Обратите внимание, что для многих проектов вы * обязательны для выполнения rebase перед тем, как сделать запрос на вытягивание. – o11c

+0

@ o11c: Это первый раз, когда я слышал об этих требованиях.С другой стороны, другие команды/процессы развития имеют свои особенности. – Makoto