Я боролся с кривой обучения git / git-svn и прошлой ночью, как часть этой кривой обучения, я сделал что-то очень, очень плохое. С тех пор я исправил это, но я надеюсь понять ошибку своими путями.
У меня есть svn-репозиторий, из которого я клонировал ствол и ветви (теги, которые я игнорировал, поскольку мы над ними не работаем). Используя git, я создал локальные ветви для каждой ветви, с которой мне нужно работать:
$ git checkout -b trunk svn/trunk
$ git checkout -b feature1 svn/branches/development/feature1
$ git checkout -b maint svn/branches/maintenance/previous-version
Я сделал feature1 своей активной веткой и сделал несколько изменений, прежде чем меня отвели на несколько дней. Я обратился к нему вчера, хотел интегрировать любые изменения, которые были сделаны в багажнике, чтобы я работал с последними и лучшими. Сначала я полностью обновил все ветки с помощью git svn rebase (никто не работал над веткой feature1). Со всем актуальным из моего хранилища SVN, я попытался сделать ребаз.
Имея feature1 в качестве активной ветки, я выполнил "git rebase trunk", думая, что я буду переносить изменения из ствола в ветку feature1. Оказывается, я был очень, очень неправ. После объединения всех конфликтов я выполнил git svn dcommit и обнаружил, что мои изменения были применены к соединительной линии.
Мой первый вопрос просто, где была основная ошибка в моем мыслительном процессе? Во-вторых, после долгих чтений и поисков в Google я вижу, что люди поддерживают тяну, слияния и перебазировки. Учитывая тот факт, что я хочу объединить изменения, примененные в одной локальной ветке, с другой локальной ветвью, что должен я сделал? Какова лучшая практика для этого сценария?
Спасибо за вашу помощь.