Как я могу сделать Git SVN правильно?
В рабочей среде нашим контролем версий является Subversion, и это вряд ли изменится. Я хочу использовать Git локально, в основном для локальных репозиториев.
контекст
Базовый URL: http://www.example.com/code (с ./trunk, ./branches, ./tags).
Используя TortoiseGit, я смог указать, какой из них проверить. Я хотел бы, чтобы все ветви, теги и ствол были доступны локально. Это означает, что я мог бы объединиться из локальной ветви обратно в главную, если это необходимо, на основе одной из удаленных ветвей.
Как мне сделать это правильно?
После того, как этот долгий процесс завершился, я попытался выполнить ребазинг к remotes / branch /EXAMPLE-BRANCH1, используя TortoiseGit 'SVN Rebase', исходя из master
в remotes/branch/test-branch
, Это не удалось, сказав, что мастер был далеко позади.
Когда я пытался уйти от master
в местный филиал на основе remotes/branch/test-branch
Слияние не сработало.
1 ответ
Чтобы клонировать репо, включая все ствол / ветви / теги, со стандартной компоновкой (как вы уже упоминали):
git svn clone -s http://www.example.com/code new-repo-directory
ПРИМЕЧАНИЕ: использование мерзавца не является серебряной пулей. У вас все еще будут конфликты слияния / перебазировки, которые вам нужно будет решить. Вероятно, их будет намного меньше, но они не исчезнут полностью. Ошибка, вероятно, была точной и указывает на то, что вам нужно разрешить конфликты, а затем завершить перезапись git rebase --continue
,
Я уверен, что черепаха - отличная помощь для многих вещей. Но мне много раз говорили, что вы получите намного больше от git, если научитесь использовать командную строку (и я верю, что я согласен) и использовать помощники GUI в качестве инструментов, только когда вы поймете, что они делают за сцены.
PS - git svn rebase
предназначен для применения изменений, внесенных в SVN, поверх текущей отслеживаемой ветви SVN. Если вы пытаетесь объединить 2 разных отслеживаемых ветки SVN, вы захотите использовать git checkout branch-to-update
затем git rebase branch-with-updates
(и разрешите любые конфликты, тогда git add the-conflicted-file
а также git rebase --continue
пока не закончено).