2014-12-13 2 views
6

В настоящее время у меня стабильная ветвь мастера и ветвь с большими изменениями на определенных классах.Слияние небольших изменений на ветку

При использовании ветки «changes» я обнаружил ошибку, которую я также хочу исправить на главной ветке.

Я исправил его, изменив только одну строку кода на главном устройстве.

Теперь я хочу, чтобы это исправление также добавилось в ветвь «changes».

Reading some answers, было высказано предположение, что лучшим вариантом будет Rebase.

При применении git rebase master на ветке «изменения», git, похоже, считает один из конфликтующих файлов совершенно другим файлом, чем раньше. Используя mergetools --tool diffuse, я получаю следующее диагностическое:

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

Мой вопрос: есть ли способ слить небольшое изменение в сильно измененную ветку, не тратя много усилий на разрешение конфликтов? Если нет, каков наилучший способ справиться с этой ситуацией?

+0

Для однострочных изменений, выбор вишни - это путь. –

+0

Для сильно измененной части это только ухудшится. Когда придет время, возможно, стоит проверить imerge - я никогда не использовал его в гневе сам, но он кажется хорошо продуманным и популярным. – jthill

ответ

3

Вы можете использовать метод cherry-pick user3387542, это хороший способ сделать это, но не единственный способ. Другое дело, так как ошибка существует и на основной ветке, у нее также есть последняя база слияния для двух.

git checkout $(git merge-base master changes) 
# fix bug at the last branchpoint 
git commit -m 'fix bug #27182' 
git branch bugfix-27182 

git checkout master 
git merge bugfix-27182 

git checkout changes 
git merge bugfix-27182 

# git branch -d bugfix-27182 

Там же недостатки так или иначе, вы баланс совершить-график помехи с четкой прослеживаемостью (это легко сказать git branch --contains $somecommit, чтобы выяснить, какие ветви содержат исправления, не так просто и не так уверены искать эквивалентные фиксации, но более чистая история.

2

Посмотрите на команду git cherry-pick. Здесь более подробно о нем:

http://git-scm.com/docs/git-cherry-pick

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

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