2017-02-02 12 views
0

Существует ведущая ветвь с именем develop. И филиал (feature_branch_1) возник из-за развития отрасли. Я вношу изменения в feature_branch_1. Скажем, я буду работать на feature_branch_1 в течение двух недель. И каждый день мне нужно мое feature_branch_1 синхронизируется с разработкой изменений в ответвлении (develop филиала будет иметь изменения, совершенные других, и мне нужно, чтобы эти изменения, так что мой feature_branch_1 не будет сильно отклонился от develop ветви, и я знаю, что происходит в develop отрасли, а)Как сохранить синхронизацию ветви git sub/feature с основной веткой с использованием rebase

Я пытался использовать git rebase develop для этой цели, как показано ниже,

git checkout develop 
git pull 
git checkout feature_branch_1 
git rebase develop 

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

Я делаю это неправильно, используя rebase? Как я могу держать мой feature_branch_1 синхронизируются с develop ветви всегда (как минимум должен быть синхронизирован с последними изменениями в последние 24 часа)

Примечание: я проверил другой связанным с SO вопросов также. Без использования rebase вообще мы можем это сделать. как показано ниже,

git checkout develop 
git pull 
git checkout feature_branch_1 
git merge develop 

и после этого,

git push origin/feature_branch_1 

Я могу сделать это каждый день, и держать мой feature_branch_1 синхронизируются с develop. Есть ли способ сделать это с rebase без моих собственных коммиттов, противоречащих друг другу?

+0

Короткий ответ: нет, вы не можете избежать этого при перезагрузке.Долгий ответ: да, вы могли бы избежать этого, просто используя 'git merge' вместо rebase. Однако, грубо говоря, трение между ветвями 'develop' и' feature_branch_1' всегда будет там и должно проявляться независимо от рабочего процесса, который вы решите использовать. –

+0

@TimBiegeleisen Итак, неплохо было бы использовать rebase для синхронизации. – prime

+0

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

ответ

0

Да, вы имеете право использовать его. Размер файлов конфликтов зависит от изменений связанных коммитов. Если оба файла develop и feature_branch_1 изменены, файлы могут иметь больше конфликтов. Существует еще один способ сделать то же самое:

git checkout feature_branch_1 
git pull origin develop --rebase 

Это сделает ваш feature_branch_1 на основе новейшей develop отрасли.

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

Чтобы использовать rebase или merge, это зависело от того, нужно ли внести вклад в основной проект. rebase просто заставляет вас работать над новейшей разработкой, а слияние может сделать нашу работу частью основного проекта.