Это немного странный вопрос, учитывая, как команда, к которой я присоединился, использует SVN. По сути, хранилище SVN следует стандартной схеме, но ствол действительно не был затронут в течение 1,5 лет или около того, и работа, как правило, происходит только в филиалах и филиалах филиалов. Таким образом, я использовал git-svn для клонирования из ветви, которая представляет активную ветвь для нашего следующего выпуска, и именно это мастер-треки в моем локальном репозитории git. Давайте назовем эту ветку в svn 'release' с этого момента. Использование git-svn для этой цели - просто чудак.
Теперь, кто-то создал ветку функций из «релиза», которую я собираюсь назвать «функцией», которую я хотел бы перенести в локальную мою ветвь, а также сделать коммит. Конечно, я могу сойти с рук, просто клонировав эту ветвь в другой каталог / git-репозиторий локально, но я бы хотел сделать так, чтобы функция «зеркалировалась» в локальной ветке внутри моего локального git-репозитория, чтобы сделать слияние между двое как можно проще. Я видел другие посты на stackoverflow.com, показывающие, как это работает, при условии, что вы использовали git svn init
с --stdlayout
, но я не делал этого в моем случае по причинам, указанным выше.
Вот мой .git / config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[svn-remote "svn"]
url = https://our.svn.server/svn/root/branches/release
fetch = :refs/remotes/git-svn
Я предполагаю, что мне нужно в моем [svn-remote]
разделе branches = $something
, но я не знаю, что это за $ что-то в этом случае, и какое заклинание git checkout и других команд мне нужно после того, как я это сделаю изменить на .git / config.
Есть предложения?
Редактировать - Следующие работы:
Итак, я начал с нуля и выполнил следующую команду клона:
git svn clone <a href="https://my.svn.server/svn/root" rel="noreferrer">https://my.svn.server/svn/root</a> -T branches/branch_I_want_as_master -b branches
Который, примерно через 16 часов, наконец-то снес все, что нужно. Результирующий .git / config выглядит так:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[svn-remote "svn"]
url = https://my.svn.server/svn/root
fetch = branches/branch_I_want_as_master:refs/remotes/trunk
branches = branches/*:refs/remotes/*
Так что я знаю, что это работает - я могу git checkout -b name-of-a-branch name-of-a-branch
, и это дает мне удаленную ветку в моем локальном git-репо. Предыдущие ответы не были точными ответами, которые мне нужны, но я проголосовал, так как они были полезны.
На данный момент я приму ответ, который просто объясняет, почему это работает, и, возможно, полезную ссылку, которая разбивает, как правильно делать вещи с .git / config.