2011-10-07 127 views
1

我想創建一個git倉庫,它有幾個分支,每個分支跟蹤一個不同的svn倉庫。我希望主人是一個只有git的分支,而不是svn分支之一。git svn rebase總是變身高手?

這是我的初始設置:

$ 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的分支-a顯示我的本地分支命名爲主機(其中只包含的README文件),本地分支命名svn1(其中包含我的svn repo clone)和一個remotes/svn1/git-svn分支。我可以通過重複最後三個命令來創建svn2,svn3等。

問題是得到更新:如果我運行「git svn rebase」,而我有svn1簽出,主人得到重定位而不是svn1。即使我使用「git svn rebase svn1」或「git svn rebase svn1 svn1」,也會發生這種情況。

有沒有辦法讓git svn rebase離開我的主人一個人?

+0

我不確定你應該使用svn克隆的--track選項。 –

回答

2

如果你只是想獲得svn更新w/o rebasing任何使用git svn fetch命令。您可以使用git svn fetch --fetch-all從所有定義的svn存儲庫獲取svn更新。

如果您想要與另一個分支進行重新綁定,而不是先切換到另一個分支,然後執行git svn rebase。該命令與當前HEAD重新綁定。

+0

'git svn fetch'更新我的遠程分支,但不更新正在跟蹤遠程的本地分支。 我正在運行'git svn rebase',而我的本地分支簽出了,而不是在主內。這是我所問的問題。 – DougWebb

+1

在我的主機上雙擊選中。 'git svn rebase'重新設置當前HEAD而不是主設備。 –

0

你需要找出你所有的分支。 Git需要追蹤遙控器,所以列出它們並找到你想要變形的遙控器:

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