将几个Maven模块提取/移动到新的Git存储库中

Extract/move several Maven modules into a new Git repository

我有一个巨大的Git报告,大约有50个Maven模块(一个Maven反应堆建造)。如何将这些模块中的一些移动到新的git repo中?

我尝试了git subtree,但是这些命令总是将代码移动到新repo的根目录,而且我不能说"我想在新repo中使用a/b/c/d/"——相反,我必须移动每一棵树,然后,我必须重命名文件,然后从根目录移动到原来的位置(相对而言)。

如何导出/复制/移动按路径筛选的一组变更集,从一个git repo到另一个git repo,而不进行任何更改?有点:我该如何用git重复历史?

注意:我想移动数据。新回购协议不应该以任何方式被Git联系起来;Maven已经为我做了这件事。没有必要用subtree魔法来推动上游的变化或类似的事情。我希望世界看起来好像我们有两个休息开始。


创建多个回购的克隆-为最终想要拥有的每个新回购创建一个克隆。然后在每个新的repo中使用git filter-branch(或者一些在此基础上构建的工具,比如bfg repo cleaner),删除所有不想保留的内容。例如,在从git/github的历史记录中删除文件夹及其内容中对此进行了描述。

例如,如果要将一个repo拆分为两个新的repo,可以创建两个克隆(我们称之为a和b)。在A中,删除将进入B的所有内容,而B则相反。

然后,您将得到几个"新"回购("新"是指它们包含新的、重写的提交),每个都包含原始回购的一些子树。

作为重写过程的一部分,您可以决定是否要更改目录结构(例如,将main/subA移到subA,如果repo只包含subA,或者是否要在每个新repo中保留旧结构。

重要提示:在真实回购上尝试此操作之前,请创建一个克隆(在本地计算机和共享服务器上)并至少尝试一次。

如果需要多次执行此操作,则需要将两个回购合并为一个回购。为此,请参见Git合并不同的存储库?