2010-01-25 3 views
27

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

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

git checkout -t -b dev remotes/development 

Но это не работает с другой ветвью, так как он не появляется в мерзавце ветви -r

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

+0

Возможный дубликат [Как сообщить git-svn о удаленной ветке, созданной после того, как я получил репо?] (Http://stackoverflow.com/questions/296975/how-do-i-tell-git-svn -about-a-remote-branch-created-after-i-fetched-the-repo) –

ответ

43

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

$ git svn fetch 
$ git svn rebase 

Убедитесь, что ваш филиал является чистым первым.

+2

Спасибо за подсказку. Обычно я просто '' git svn rebase''.Добавление выборки делает трюк. –

-2

git svn rebase --fetch-all будет решать его, обратитесь к man page:

Это извлекает ревизию из SVN родителя текущей ГОЛОВЫ и rebases ток (незавершенный к SVN) работать против него.

[...]

Это работает аналогично обновлению SVN или Git тянуть

[...]

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

: я: НО она извлекает все Svn копий/ветви

+0

Вам нужно сделать git svn fetch, а затем git svn rebase. – QCar

+0

@Chesney - это не особенность, а ошибка? –

+0

О, вы правы, это подразумевает выборку, но нет - в отношении вопроса - выборка ветвей, когда я тестировал себя https://gist.github.com/childnode/979812d69a3f266baede, вам нужно добавить '--fetch- все' опция. отредактировать ответ –

10
git svn rebase 

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

git svn fetch 

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

git fetch 

который только извлекает ветви, которые вы указали, как и с мерзавца СВН перебазироваться.

Эта разница в первую очередь потому, что мерзавец не может «видеть» СВН пультов ветви, пока они не были втянуты в локальный репозиторий против, когда вы клонировать репозиторий и GIT ветви -a показывает все удаленные филиалы (даже те, которые не отслеживаются/не будут обновляться с помощью выборки).

Смежные вопросы