如果我执行 "git branch",git 会回复 "* master",如果我执行 "git branch -r",我会获得 svn 存储库中所有分支的列表。
我的最后一次 svn-checkin 在其中一个分支中,但是当我执行 "git svn clone" 后,我的那个分支中的提交(它们还没有合并到主干中)在我的(git)主支中可见。我错过了什么吗?
此外,如果我在我的开发机上执行 "git clone ",我可以正确获取文件。但是,如果我执行 "git branch -r",我只能看到主分支而不是远程分支。
由于我们要完全摆脱 svn-repo,因此我希望在 git-repo 中拥有所有 svn 分支,以便可以从开发人员客户端访问它们。
再次说明,我不是完全的 git 新手,但离这很远。因此,如果我漏掉了某些基本内容,请告诉我。
更新 在阅读了一些 RTFM(man git-svn)之后,我通过以下命令解决了存在于主分支中的分支问题 reset --hard remotes/trunk
现在主干和master分支是相同的。下一步是弄清楚如何获取来自开发客户端的分支。
更新2 我通过结合上面的URL和Scott指向的URL使其工作。所以,从一开始。
我首先在服务器上创建了一个空仓库,它们保存在我们服务器上的/usr/local/git-repos中:
server> cd /usr/local/git-repos
server> mkdir my_project.git
server> cd my_project.git
server> git init
然后我将svn仓库克隆到我的开发机上(请注意,在我们的svn服务器上,“分支”目录被称为“branch”,没有's'):
dev> git svn clone http://<svn.server>/my_project --no-metadata -A authors.txt -t tags -b branch -T trunk my_project
然后需要进行一些清理工作,以使标签和分支有序:
dev> cp -Rf .git/refs/remotes/tags/* .git/refs/tags/
dev> rm -Rf .git/refs/remotes/tags
dev> cp -Rf .git/refs/remotes/* .git/refs/heads/
dev> rm -Rf .git/refs/remotes
现在将我的服务器添加为远程仓库:
dev> git remote add origin jorgen@<our_server>:/usr/local/git-repos/my_project.git
最后,将所有分支和标签推送到服务器:
dev> git push origin --all
哎呀,终于完成了,现在我可以摆脱那个svn仓库了。
更新3
请查看下面ebneters的帖子,有更简单的方法...