Создайте ветку SVN из существующей ветки Git

Я клонировал существующий проект SVN через git svn clone без проблем, но тем временем я создал ветку только в Git (не в SVN), и теперь я хотел бы синхронизировать эту ветку обратно с веткой SVN (не багажник).

Я создал ветку недавно. Можно ли вернуть информацию, хранящуюся в этой ветке Git, в SVN?


person khmarbaise    schedule 11.03.2011    source источник


Ответы (1)


Вы можете создать новую ветку в Subversion, используя git svn branch. Возможно, вы захотите взглянуть на пример в этом ответе:

В частности, хороший совет в связанном руководстве - использовать параметр --dry-run для svn dcommit, чтобы проверить, что, когда вы запускаете команду по-настоящему, она будет перемещаться в правую ветвь.

В книге Pro Git есть более четкое описание того, как git svn dcommit решает, какую ветвь svn следует Обновить. Мне кажется, вам следует:

  • Создайте новую ветку svn, используя git svn branch new-experiment
  • Создайте локальный филиал для отслеживания remotes/new-experiment с помощью git checkout --track -b new-experiment remotes/new-experiment
  • Переложите изменения из старой ветки темы git (предположим, она называется experiment) на new-experiment:

     git checkout experiment
     git branch original-experiment
     git rebase new-experiment
     git checkout new-experiment
     git merge experiment
    
  • Попробуйте git svn dcommit --dry-run проверить, что правильная ветка Subversion будет обновлена
  • If so, do git svn dcommit
person Mark Longair    schedule 11.03.2011
comment
Я хочу зафиксировать изменения, которые я внес в ветке Git, в ветку Subversion, а НЕ в ствол. Если я хочу внести эти изменения в ствол, я могу просто выполнить слияние раньше. - person khmarbaise; 11.03.2011
comment
Это было совсем не ясно из вашего вопроса. Я обновлю свой ответ. - person Mark Longair; 11.03.2011
comment
@khmarbaise: Хорошо, я закончил обновлять свой ответ - надеюсь, это более понятно. Я предлагаю выполнить перебазирование, а не слияние, чтобы в вашей ветке subversion не получился просто один коммит слияния. - person Mark Longair; 11.03.2011
comment
Я получил ошибку 'remotes/my-branch' is not a commit and a branch 'my-branch' cannot be created from it. Мне пришлось сделать git branch -r, чтобы увидеть настоящее имя. - person nupanick; 16.01.2019