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