我正在尝试创建一个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的本地分支(它只包含README文件),一个名为svn1的本地分支(包含我的svn repo clone)和一个remotes / svn1 / git -svn分支。我可以通过重复最后三个命令来创建svn2,svn3等。
问题是获得更新:如果我在svn1签出时运行“git svn rebase”,那么master会被重新命名而不是svn1。即使我使用“git svn rebase svn1”或“git svn rebase svn1 svn1”,也会发生这种情况。
有没有办法让git svn rebase让我的主人独自离开?
答案 0 :(得分:2)
如果你只是想获得svn更新而没有使用git svn fetch
命令来重新定义任何东西。您可以使用git svn fetch --fetch-all
从所有已定义的svn存储库获取svn更新。
如果您想要使用另一个分支而不是主分支,请先切换到另一个分支,然后再执行git svn rebase
。此命令使用当前HEAD重新绑定。
答案 1 :(得分:0)
你需要找出你拥有的所有分支。 Git需要跟踪遥控器,所以列出它们并找到你要反对的那个:
$ git branch -a
* master
remotes/trunk
$ git svn fetch
$ git rebase remotes/trunk