我是一个svn用户,需要将我的svn代码镜像到一个git存储库。git的用户将无法访问svn存储库,因此解决方案不能依赖于直接从svn签出代码作为某种外部存储库。
我正在尝试使用git- svn,以便我可以在svn中进行更改,然后更新它们并将它们同步到git。
我已经克隆了要同步svn代码的git,然后执行如下操作:
git svn clone svn+ssh://path/to/my/code --trunk my_module --prefix mirror/我可以看到我的svn回购被克隆了。如果我尝试像这样切换到主干分支:
git checkout mirror/trunk我被告知我在一个detached HEAD state中(这是一个适合我现在感觉的错误信息)。
因此,我的问题是,如何将本地签出的svn代码上传到远程git存储库。第二,我将如何对代码进行定期更新?
发布于 2013-11-15 21:38:45
mirror/trunk是git所称的远程跟踪分支--您不能在本地提交它,只能获取它来更新它,所以这就是为什么您看到了一些戏剧性的“分离头”消息。
在克隆之后,您可能已经在默认情况下跟踪它的本地分支master上了。要返回,只需运行git checkout master。
要将代码从svn移动到git,首先要为您希望代码在其中结束的git存储库添加一个远程:
git remote add public git@...我建议为svn工作创建一个新分支,这样git开发人员就不会对它做出承诺,并使事情复杂化:
git checkout -b svn-work然后把它推到你刚刚设置的遥控器上:
git push public svn-work要使git克隆保持最新,您需要运行(手动运行或由cron运行):
git svn rebase
git push public svn-work如果你希望连接是双向的,事情会变得更加棘手。将work 从git移动到svn的命令非常简单:
git svn dcommit..。但是,在您可以将哪些内容推入svn方面有很多警告;基本上,git用户需要确保该分支的历史保持线性,这不是一件简单的事情。
https://stackoverflow.com/questions/20010631
复制相似问题