Обновление списка удаленных веток git-svn - PullRequest
28 голосов
/ 26 января 2010

Когда мне нужно использовать svn, я использую git-svn для общения с svn. Я клонировал репозиторий со стандартной строкой git svn clone -s, и все удаленные филиалы того времени были там.

С тех пор была создана новая ветка, но не мной. Я хочу оформить / отслеживать эту ветку локально. Я могу отследить ветку, которую вижу (с помощью git branch -r) следующим образом:

git checkout -t -b dev remotes/development

Но это не работает с другой веткой, так как она не отображается в git branch -r

Как я могу отследить эту пропавшую ветку?

Ответы [ 3 ]

44 голосов
/ 26 января 2010

После запуска следующих команд вы сможете увидеть новую ветку на стороне git:

$ git svn fetch
$ git svn rebase

Сначала убедитесь, что ваша ветвь чистая.

10 голосов
/ 27 июля 2011
git svn rebase

перебазирует текущую ветку, и все указанные вами ветки должны автоматически выбираться в вашей конфигурации локального репозитория.

git svn fetch

извлечет все ветви из репозитория SVN, как описано, когда вы изначально делали клон git svn (включая новые). Это в отличие от поведения

git fetch

, который выбирает только указанные вами ветки, как в случае git svn rebase .

Это различие в первую очередь связано с тем, что git не может "видеть" ветки удаленных SVN, пока они не будут перетащены в локальный репозиторий по сравнению с тем, когда вы клонируете репозиторий git, а git branch -a показывает все удаленные ветви (даже те, которые не отслеживаются / не будут обновляться извлечением).

0 голосов
/ 11 февраля 2011

git svn rebase --fetch-all займется этим, см. Справочную страницу :

Получает ревизии из SVN. родитель текущего HEAD и ребаз текущая (незафиксированная в SVN) работа против этого.

[...]

Это работает аналогично svn update или git pull

[...]

Это принимает все опции, которые принимают git svn fetch и git rebase. Однако --fetch-all выбирает только из текущих [svn-remote], а не всех [svn-remote] определений.

: i: НО он выбирает все svn-копии / ветви

...