Предполагая, что здесь нет сумасшествия git-svn (я не уверен, что использование вами слова "trunk" означает, что вы пришли из svn и сохранили терминологию, или фактически взаимодействуете с ней) ...
Самый чистый способ сделать это, предполагая, что шаг сортировки «удалить код на транке» был выполнен в изолированном коммите, состоит в том, чтобы отменить этот коммит, а затем объединить:
git checkout master
git revert <triage-commit> # could do this for multiple commits if needed
git merge bugfix-branch
Если это не так чисто, объединениеспособ идти;вам просто нужно разобраться с некоторыми вещами.Возможно, вы захотите сделать это в тестовой ветке на всякий случай:
# start back from master
git checkout -b master-merge master
# merge your fixes
git merge bugfix-branch
На этом этапе вам придется столкнуться с множеством «удаленных нами» конфликтов (вот как они сообщают git status
).Это указывает на то, что они были удалены в «нашей» ветви (основной), но изменены в ветви, которая должна быть объединена.Это оставит версии из ветви, которая будет объединена, в дереве.Вы можете git add
пометить их как разрешенные.Если у вас есть конфликты, которые не являются этой формы, вам придется работать с ними как обычно.Как только вы все исправите, проверьте результаты, протестируйте и git commit
, чтобы завершить объединение.
Если вы уверены, что все конфликты возникнут в результате этого сценария сортировки / исправления ошибок, вы можетеиспользовал git merge -X theirs
, чтобы сообщить Git о разрешении всех конфликтов, сохранив «свою» версию (ту, что была в ветке исправлений).Делайте это, только если вы уверены!
git-svn note: Я слышал, что git-svn
имеет проблемы со слияниями.Я никогда не использовал его, я понятия не имею, как это работает, но если это так, что вы не должны иметь слияния во всем, что вы намереваетесь отправить обратно в репозиторий SVN ... тогда вместо слияния выше, выможет перебазировать git rebase master bugfix-branch
.Вы столкнетесь с точно такими же конфликтами слияния.После того, как вы справитесь с ними, вы можете быстро перенести мастер до недавно пересаженной ветви с помощью git checkout master; git merge bugfix-branch
.