Git: как работает git svn fetch?
Как работает git svn fetch
? Где находится та ветвь, которая извлекается, чтобы я мог слиться или перебазироваться с моим мастером или другой ветвью? Откуда берутся данные, потому что git remote
ничего не дает мне в моем хранилище git svn
?
3 ответа:
Вот как работает
git svn fetch
:При использовании
git-svn
у вас нет remotes сервера svn, как у вас есть при использовании git, у вас просто есть ссылка на удаленный svn сервер в вашем локальном .файл gitconfig .Если вы хотите обновить текущую ветвь до последней редакции, вы можете использовать
git svn rebase
. Но если ваш проект svn большой, вы можете оказаться в ситуации, когда вы не знаете, является ли ваша последняя версия успешной сборкой. А если ты ... хотите обновить до определенной ревизии, которая, как вы уверены, является успешной сборкой, например, вы используете Jenkins, который дает вам последнюю успешную сборку, вы должны сначала извлечь в нужную ревизию, а затем перебазировать с извлеченными коммитами.Для этого можно
git svn fetch -r <revision>
. Это приведет к локальному извлечению коммитов до нужной ревизии. Для перебазирования полученных данных необходимо использоватьgit svn rebase -l
илиgit svn rebase --local
. Вам не нужно быть онлайн, чтобы сделать локальную перебазировку.
По умолчанию ветвь отслеживания git-svn является
remotes/git-svn
, вы можете использовать ее для объединения или перебазирования своей работы поверх изменений, полученных с помощьюgit svn fetch
.
Инструмент git-svn, к сожалению, на самом деле не превращает удаленные ветви SVN в настоящие git remotes. Они выглядят как пульты дистанционного управления, но на самом деле они не функционируют как пульты дистанционного управления. git-svn отслеживает ветви внутри, и я тоже нашел это немного разочаровывающим.
Однако вы можете ветвиться от ветвей SVN или сливаться с ними. Запуститеgit branch -r
, чтобы просмотреть все удаленные ветви отслеживания, включая псевдо-ветви, созданные git-svn:$ git branch -r svn/SVNBranch1 svn/SVNBranch2 $ git checkout -b branch1 svn/SVNBranch1