我是 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”时,我在该分支中的提交(它们尚未 merge 到主干中)在我的(git ) 主分支。我在这里缺少什么?
此外,如果我在我的开发机器上执行“git clone”,我可以正常获取文件。但是,如果我执行“git branch -r”,我只能看到主分支,而看不到远程分支。
由于我们要一起摆脱 svn-repo,我希望在 git-repo 中拥有所有 svn 分支,以便可以从开发人员客户端访问它们。
再说一次,我不是一个完全的 git 新手,但离它不远。因此,如果我在这里遗漏了一些基本的东西,请告诉我。
更新
在做了一些 RTFM (man git-svn) 之后,我解决了主分支中存在的分支内容的第一个问题
reset --hard remotes/trunk
现在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-repository 克隆到我的开发机器(注意,在我们的 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
checkout ebneters post下面是一种更简单的方法......
最佳答案
这里有一个关于如何做一个非常好的 SVN 导入的相当详细的解释,解释了如何正确地转换分支:
https://git-scm.com/book/en/v1/Git-and-Other-Systems-Migrating-to-Git
简短的回答是运行这个:
$ cp -Rf .git/refs/remotes/* .git/refs/heads/
$ rm -Rf .git/refs/remotes
希望对您有所帮助。
关于svn - 将 svn 转换为 git,如何让分支在 svn 仓库中不只是远程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1584675/