使用git-svn将svn存储库克隆到git中很容易。但是,我需要反过来这样做。 我有一个git存储库,想要将它导入一个空的(从trunk,branches和tags文件夹除外),保留所有的提交信息。
我把svn repo的git-svn-clone解雇了,拉了git master并且dcommitted。然而,我在svn中唯一提交的是“从git中合并”的那个提交
我也尝试了另一种方法:克隆了git repositoy并调用了git svn init,但git一直说“无法确定HEAD历史记录中的上游SVN信息。”
以某种方式可以从git创建一个svn存储库吗?
干杯, 迈克尔
答案 0 :(得分: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
Subversion不会保留提交时间或作者身份。 如果你使用分支,上帝会帮助你。
答案 1 :(得分: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
只需要编辑樱桃选择,因为我快速设置git存储库只有空提交