我有一个现有的 SVN 存储库,我想将其中的一部分与历史记录导入现有的 Git 存储库。谁能给我一个关于执行此操作所需命令的高级概述?
概括:
- 我想移动现有 SVN 存储库中的一些子目录(但不是其余的存储库)
- 我有一个现有的 Git 存储库,我想将这些目录导入
- 我想只保留我移动的子目录的历史(但不是其他任何东西)
我有一种感觉,这涉及到git filter-branch
一些奇怪的合并。任何帮助,将不胜感激。
我有一个现有的 SVN 存储库,我想将其中的一部分与历史记录导入现有的 Git 存储库。谁能给我一个关于执行此操作所需命令的高级概述?
概括:
我有一种感觉,这涉及到git filter-branch
一些奇怪的合并。任何帮助,将不胜感激。
事实证明这很复杂,但这就是我所做的。
首先准备 SVN 存储库。之后我打算从 SVN 中删除文件,因此将所有文件放在一个目录中很有帮助(这也使filter-branch
以后更容易。)
使用 git: 签出 SVN 存储库git svn clone http://path/to/svnrepo
。这将创建 svn 存储库的 git 版本。
使用此 SO 帖子中的想法,将子目录分离(移动)到单独的 Git 存储库中,我使用filter-branch --subdirectory-filter
来过滤我想要的目录,并从 SVN 中删除我不想保留在 git 中的其他内容的历史记录。您还可以使用git subtree
一个新功能,如如何提取 git 子目录并从中制作子模块?
然后,使用这篇 SO 帖子中的想法,如何合并两个 Git 存储库?,我将新的 git repo 导入到我想要添加到的父项目中。接受的答案不正确,请查看该页面上的其他答案;你想做 agit remote add git-proj <path>
后跟 a git pull
。
最后,将更改推送到 git 项目。