У меня есть git-svn checkout всего моего репо (инициализируется стандартным способом git svn init -t tags -b branches -T trunk $repo_url
, затем git svn fetch
ed). Я вручную svn copy $repo_url/branches/branch1 $repo_url/branches/branch2
. Затем я запустил git svn fetch
, git checkout -b local-branch2 branch2
, сделал несколько коммитов на branch2
, dcommit
вернул их в репозиторий SVN, и моя работа над branch2
завершена. (Зачем ветвить ветку? Я хотел взломать эту ветку локально в git, но все же вернуться к SVN и получить помощь от пары коллег, пока я работал над ней).
Чего я не сделал, так это слияния работы branch2
с branch1
. Если я git checkout -b local-branch1 branch1
, то git merge branch2
, он просто переместит мой local-branch1
указатель туда, где branch2
.
Вместо этого я хочу, чтобы git воспроизводил все коммиты, сделанные с момента запуска branch2
на branch1, чтобы я мог dcommit каждого из них в репозиторий SVN. Кажется, что есть способ сделать это, но я не могу думать об этом. Может быть git rebase
или git cherry-pick
каждого коммита, сделанного на branch2
? (хотя последнее немного утомительно). Я бы предпочел, чтобы svn не объединил два URL вместе, так как это большая куча вреда.
Идеи? Любые части этого требуют большего объяснения?