我目前正在尝试将当前的工作仓库与从我工作的旧svn仓库转换而来的仓库合并。我希望新的仓库(我们称之为A)与当前的工作仓库(B)合并。
B是尝试将svn repo转换为git并且历史记录完好无效的结果。 A是第二次尝试。如果我只是将B与A合并,那么旧的svn repo中的所有内容都会有重复的提交。我想只包括在最后一次svn提交之后发生的B的历史记录。
我正在寻找git-fast-export,但我没有找到任何可以帮助我的文档。我应该使用git-fast-export,还是有更好的方法?我如何使用git-fast-export或其他东西进行合并?
答案 0 :(得分:2)
如果您只有一个分支要合并,那么另一种方法是使用移植物(参见“gardening tips -- grafting branches”):
B
添加为A
的遥控器:“remoteB
”,A
的SHA1代表转换的SVN仓库(以及新的提交已完成):“SHA1-A
”,B
的SHA1(即,从失败的SVN转换完成的第一次新提交):“{{1 }}”,您可以使用名为grafts的文件覆盖Git中的提交父项,该文件需要驻留在
SHA1-B
。
它由若干行组成,其中提交哈希由空格字符分隔,其中第一个哈希是您要为其定义父项的提交,以下哈希是父项。注意:您必须使用完整哈希值,而不是缩写词。
要修复上述历史记录,我们必须在
.git/info/
中定义父母:
.git/info/grafts
使移植物永久化:
SHA1-B SHA1A
使本地分支引用您刚刚获得的git filter-branch --tag-name-filter cat -- --all
分支的HEAD,。
B
合并你的两个分支(你可以删除'remoteB'仓库,你不再需要它了。)