Если вы создали свою локальную ветку до того, как существовала ветка subversion, и теперь вы хотите перенести свою локальную ветку в ветку subversion, вы можете сделать следующее:
Получить версию ветки svn, назначенную для локальной ветки
$ git svn info
из выходных данных, поле URL
будет текущим путем ветви svn, а поле Revision
будет номером ревизии subversion
Создайте ветку svn из ревизии, в которой вы создали локальную ветку
$ svn cp http://svn-repo/my_app/trunk@123 http://svn-repo/my_app/branches/feature1
Получите новую ветку svn, чтобы ваш git-репозиторий знал об этом
$ git svn fetch
ветка svn теперь должна быть добавлена в качестве удаленного в вашем репозитории git
$ git branch -a
* feature1
master
remotes/feature1
На этом этапе ваш пульт все еще будет транком. Вам нужно указать локальную ветку на новую удаленную ветку. Вы можете сделать это, перебазировав свой локальный филиал из удаленного филиала:
$ git rebase remotes/feature1
Теперь, когда ваша локальная ветвь ссылается на вашу удаленную ветку, вы можете зафиксировать свои изменения в ней. Сначала выполните пробный прогон, чтобы убедиться, что ваши изменения войдут в удаленную ветку:
$ git svn dcommit --dry-run
Commiting to http://svn-repo/my_app/branches/feature1
Теперь вы можете вносить изменения в вашу удаленную ветку
$ git svn dcommit
Большинство инструкций скажут вам сначала развернуть ветку subversion, а затем создать локальную ветку, которая отслеживает удаленную ветку. Но я часто заранее не решаю, должен ли мой локальный филиал отслеживать удаленный филиал. Часто я разветвляюсь локально и делаю изменения без какого-либо намерения перенести в удаленную ветку. Если позже я решу зафиксировать свою локальную ветку в удаленной ветке, я выполню шаги, описанные выше.