Моя проблема с SVN GIT была похожа. Моя структура ветвей была иерархической:
svn/projectX/branches/
svn/projectX/branches/Android
svn/projectX/branches/Android/dev-shared
Сначала я следовал инструкциям и примерам в руководстве git-svn:
https://www.kernel.org/pub/software/scm/git/docs/git-svn.html
и клонировал мой сундук, используя:
git svn clone -s --prefix=svn/ https://mw.com/svn/projectX -T trunk -t tags -b branches/Android
Затем я проверил ветки / Android / dev-shared branch и внес изменения в мою локальную ветку git. Затем я попытался "git svn dcommit -n", чтобы посмотреть, что он будет делать без фактической фиксации.
Я видел, что он пытался зафиксировать коммиты из моей ветки в транке на svn.
ТАК рад, что я использовал опцию "-n" и избежал фиксации в неправильном месте.
После долгих исследований лучший ресурс, который я нашел, был:
http://www.janosgyerik.com/practical-tips-for-using-git-with-large-subversion-repositories/
Предложенное решение состояло в том, чтобы сначала извлечь новый клон из svn, используя:
git svn clone http://me.com/projectX/trunk projectX
и затем вручную отредактируйте файл .git \ config, чтобы добавить дополнительные записи выборки для каждой из моих веток, над которыми я хотел работать:
[svn-remote "svn"]
url = https://me.com/svn/projectX
fetch = trunk:refs/remotes/svn/trunk
fetch = branches/Android/dev-shared:refs/remotes/svn/branches/Android/dev-shared
Затем, когда я повторил "git svn dcommit -n", он теперь фиксировал правильную ветку "branch / Android / dev-shared".