【发布时间】:2009-10-18 11:43:10
【问题描述】:
我对 git 很陌生,我正在尝试将 svn 存储库移动到 git。我按照下面的指南进行操作,所以现在我的服务器上有一个 git 存储库
http://pauldowman.com/2008/07/26/how-to-convert-from-subversion-to-git/
所以,如果我执行“git branch”,git 会回复“* master”,如果执行“git branch -r”,我会得到 svn 存储库中所有分支的列表。
我最后一次 svn-checkins 已经在其中一个分支中,但是当我执行“git svn clone”时,我在该分支中的提交(它们尚未合并到主干中)在我的(git ) 主分支。我在这里错过了什么?
另外,如果我在我的开发机器上执行“git clone”,我可以得到文件。但是如果我执行“git branch -r”,我只能看到主分支而不是远程分支”。
由于我们要一起摆脱 svn-repo,我希望将所有 svn 分支放在 git-repo 中,以便开发人员客户端可以访问它们。
再一次,我不是一个完全的 git 新手,但离它不远。所以如果我在这里缺少一些基本的东西,请告诉我。
更新
在做了一些 RTFM(man git-svn)之后,我解决了 master 分支中存在的分支内容的第一个问题
reset --hard remotes/trunk
现在主干和主分支是一样的。现在,接下来是弄清楚如何从开发客户端获取分支。
更新 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 服务器上,“分支”目录被称为“分支”witout '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-repo。
更新 3
在下面结帐ebneters post 以获得更简单的方法...
【问题讨论】: