将git存储库导出到svn

Mic*_*han 13 svn git

使用git-svn可以轻松地将svn存储库克隆到git中.但是,我需要反过来这样做.我有一个git存储库,想要将它导入一个空的(除了来自主干,分支和标签文件夹)保留所有提交信息.

我把svn repo的git-svn-clone解雇了,拉了git master并且dcommitted.然而,我在svn中唯一提交的是那个说"从git合并"的提交

我也尝试了另一种方法:克隆了git repositoy并调用了git svn init,但git一直说"无法确定HEAD历史记录中的上游SVN信息".

是否有可能从git创建一个svn存储库?

干杯,迈克尔

Tob*_*obu 12

这是我通过svn发布git repo的方法:

svn mkdir --parents http://host/path/to/repo/{trunk,tags,branches} \
    -m "Standard layout for $project"
git svn init -s http://host/path/to/repo/
git svn fetch
git rebase trunk master
git svn dcommit
Run Code Online (Sandbox Code Playgroud)

Subversion不会保留提交时间或作者身份.如果你使用分支,上帝会帮助你.


kni*_*ttl 6

当从其他repo git中拉出master分支时,会创建一个合并提交,因为没有共同的历史记录.

您应该使用git pull --rebase(将更改提交ID,因为它重新创建提交),然后dcommit


你也可以尝试以下方法:

首先使用svn签入初始版本(只需创建那些分支,标签,主干文件夹和提交),然后创建一个git svn clone(git svn -s clone svn://…)

然后发出以下命令:

# create a ref to your "svn" commit
git checkout -b svn
# get all your "git" commits
git fetch $your_remote_git_repo
# create a ref to your "git" commit
git branch master FETCH_HEAD
# rebase the rest your git commits
git rebase svn master
# commit to svn!
git svn dcommit
Run Code Online (Sandbox Code Playgroud)

编辑樱桃选择只是必要的,因为我快速设置git存储库只有空提交