Git: Как работает git svn fetch?

Как работает git svn fetch? Где эта ветка, которая извлекается, чтобы я мог объединиться или переустановить мой мастер или другую ветку? Где извлекаются данные, потому что git remote не дает мне ничего в моем репозитории git svn?

Ответ 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