git svn rebase всегда перебазирует мастер? - PullRequest
1 голос
/ 07 октября 2011

Я пытаюсь создать git-репозиторий, который имеет несколько веток, каждая из которых отслеживает свой svn-репозиторий. Я хочу, чтобы master был веткой git-only, а не веткой svn.

Вот мои начальные настройки:

$ mkdir repo
$ cd repo
$ git init
$ touch README
$ git add .
$ git commit -m "Initial Commit"
$ git svn init -Rsvn1 --prefix svn1/ svn://...
$ git svn fetch svn1
$ git checkout --track -b svn1 svn1/git-svn

Пока все хорошо: git branch -a показывает мне локальную ветку с именем master (которая просто содержит файл README), локальную ветку с именем svn1 (которая содержит мой клон svn repo) и remotes / svn1 / git -свн филиал. Я могу создать svn2, svn3 и т. Д., Повторяя последние три команды.

Проблема в получении обновлений: если я запускаю «git svn rebase», пока я извлекаю svn1, мастер перезагружается вместо svn1. Это происходит, даже если я использую «git svn rebase svn1» или «git svn rebase svn1 svn1».

Есть ли способ заставить git svn rebase оставить моего хозяина в покое?

Ответы [ 2 ]

2 голосов
/ 10 октября 2011

Если вы просто хотите получать svn-обновления без перебазирования, используйте команду git svn fetch.Вы можете использовать git svn fetch --fetch-all для получения обновлений svn из всех определенных репозиториев svn.

Если вы хотите выполнить перебазирование с другой ветвью вместо главного, сначала переключитесь на другую ветвь и только затем выполните git svn rebase.Эта команда перезагружается с текущей HEAD.

0 голосов
/ 17 ноября 2012

Вам нужно выяснить все ветви, которые у вас есть. Git нужно отследить пульты, поэтому перечислите их и найдите тот, против которого вы хотите перебазировать:

$ git branch -a
* master
remotes/trunk
$ git svn fetch
$ git rebase remotes/trunk
...