Переключите ветку svn git dcommits на - PullRequest
6 голосов
/ 18 июля 2011

У меня было master dcommit для (и rebase из) Subversion trunk.

Я создал промежуточную ветку Subversion tc, чтобы объединить изменения из 2 разных веток, используя:

git branch master
git svn branch tc -m "Branch for merging"
git checkout -b tcl --track tc
git merge cat #Another branch, whose changes I merged here
git commit -m 'Merged changes from cat branch'
git svn dcommit

Так как все было хорошо, я хотел повысить это до trunk.Я сделал следующее:

git branch master
git merge tcl
git svn dcommit

Теперь, поскольку master был объединен с другой веткой, которая указывала на другую ветку Subversion, он пытается зафиксировать ветку Subversion tc.Я хочу, чтобы он был связан с Subversion trunk.

Есть ли git svn switch или что-то в этом роде?

Я знаю, что мой рабочий процесс не является оптимальным, и любые предложения по его улучшению приветствуютсятоже.

Ответы [ 2 ]

4 голосов
/ 21 июля 2011

Как уже упоминалось в , этот вопрос , использование git merge в репозитории с git-svn не очень хорошая идея.

Вместо этого, что вы должны были сделать, чтобы "объединить" изменения в master, это:

git checkout master
git format-patch --stdout master..tcl | git am
git svn dcommit

Проблема с git merge в этом случае заключается в том, что он также задает URL git-svn для master для ветви SVN tc. Комбинации format-patch и am принимают только сами изменения.

1 голос
/ 09 июня 2015

AFAIK --no-ff слияние прошло бы так, как вы хотите:

git branch master
git merge --no-ff tcl
git svn dcommit
...