Ответ 1
После запуска следующих команд вы сможете увидеть новую ветку на стороне git:
$ git svn fetch
$ git svn rebase
Сначала убедитесь, что ваша ветка чиста.
Когда мне нужно использовать svn, я использую git -svn, чтобы поговорить с svn. Я клонировал репо с помощью стандартной строки git svn clone -s, и все удаленные ветки в это время были там.
С тех пор новая ветвь была создана, но не мной. Я хочу проверить/отслеживать эту ветвь локально. Я могу отслеживать ветвь, которую я могу видеть (с git branch -r) следующим образом:
git checkout -t -b dev remotes/development
Но это не работает с другой ветвью, поскольку она не отображается в ветке git -r
Как я могу отслеживать эту пропавшую ветвь?
После запуска следующих команд вы сможете увидеть новую ветку на стороне git:
$ git svn fetch
$ git svn rebase
Сначала убедитесь, что ваша ветка чиста.
git svn rebase
будет перезагружать текущую ветку, и все ветки, которые вы указали, должны автоматически загружаться в вашей локальной конфигурации репозитория.
git svn fetch
будет извлекать все ветки из репозитория SVN, как описано, когда вы изначально выполняли клонирование git svn (включая новые). Это противоречит поведению
git fetch
который выбирает только те ветки, которые вы указали, как в случае git svn rebase.
Это различие в основном состоит в том, что git не может "видеть" ветки удаленных служб SVN до тех пор, пока они не будут втянуты в локальный репозиторий, а если вы клонируете репозиторий git и ветвь git -a показывает все удаленные ветки (даже те, которые не отслеживаются/не будут обновляться с помощью выборки).
git svn rebase --fetch-all
справится с этим, обратитесь к странице руководства:
Это выборки из SVN родитель текущей HEAD и rebases текущая (незафиксированная для SVN) работа против него.
[...]
Это работает аналогично обновлению svn или git pull
[...]
Это принимает все опции, которые git svn fetch и git rebase accept. Тем не менее, --fetch-all выбирает только текущие [svn-remote], а не все [svn-remote] определения.
: i: НО он извлекает все копии/ветки svn