我正在尝试创建一个git存储库,它有几个分支,每个分支跟踪一个不同的svn存储库。我希望master只是一个git分支,而不是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的本地分支(它只包含自述文件)、一个名为svn1的本地分支(它包含我的svn repo克隆)和一个remotes/svn1/git-svn分支。我可以通过重复最后三个命令来创建svn2、svn3等。
问题在于获取更新:如果我在签出svn1的同时运行"git svn rebase“,那么master会重新基址,而不是svn1。即使我使用"git svn rebase svn1“或"git svn rebase svn1 svn1”,也会发生这种情况。
有没有办法让git svn rebase离我的主站远点?
发布于 2011-10-10 06:48:21
如果您只想获得svn更新,而不想更改任何内容的基址,请使用git svn fetch命令。您可以使用git svn fetch --fetch-all从所有已定义的svn存储库获取svn更新。
如果您想使用另一个分支而不是主分支重新建立基础,请先切换到另一个分支,然后再执行git svn rebase。此命令使用当前HEAD重新设置基址。
发布于 2012-11-18 01:21:19
您需要计算出您拥有的所有分支。Git需要跟踪远程,所以列出它们,并找到您想要重新建立基础的远程:
$ git branch -a
* master
remotes/trunk
$ git svn fetch
$ git rebase remotes/trunkhttps://stackoverflow.com/questions/7689577
复制相似问题