我有一个Git存储库,其中包含许多子目录.现在我发现其中一个子目录与另一个子目录无关,应该分离到一个单独的存储库.
如何在将文件的历史记录保存在子目录中的同时执行此操作?
我想我可以制作一个克隆并删除每个克隆的不需要的部分,但我想这会给我一个完整的树,当检查旧版本等.这可能是可以接受的,但我宁愿能够假装两个存储库没有共享历史记录.
为了说清楚,我有以下结构:
XYZ/
.git/
XY1/
ABC/
XY2/
Run Code Online (Sandbox Code Playgroud)
但我想这样做:
XYZ/
.git/
XY1/
XY2/
ABC/
.git/
ABC/
Run Code Online (Sandbox Code Playgroud) 这个问题基于Detach子目录到单独的Git存储库中
我想分离一对,而不是分离一个子目录.例如,我当前的目录树如下所示:
/apps
/AAA
/BBB
/CCC
/libs
/XXX
/YYY
/ZZZ
Run Code Online (Sandbox Code Playgroud)
而我想这样做:
/apps
/AAA
/libs
/XXX
Run Code Online (Sandbox Code Playgroud)
该--subdirectory-filter参数git filter-branch将无法工作,因为它在第一次运行时除去了给定目录之外的所有内容.我认为使用--index-filter所有不需要的文件的参数会起作用(尽管很乏味),但如果我尝试不止一次运行它,我会得到以下消息:
Cannot create a new backup.
A previous backup already exists in refs/original/
Force overwriting the backup with -f
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?TIA
我有一个相当大的git存储库,它有一个我维护库代码的目录.该目录包含许多子目录.
repo
+--- lib
| +--- A
| +--- B
...
| +--- Z
Run Code Online (Sandbox Code Playgroud)
现在让我们假设我想要打开源子目录A,...,M并保持子目录的N,...,Z源代码.我们还假设我想:
A,...,M在一个开源存储库中.原因是这些目录A,...,M具有相互依赖性,将它们分成单独的存储库会很困惑.lib/pub和lib/pvt,但这将有级联需要改变其他地方引用效应或将需要大量的符号链接(lib/A -> lib/pub/A).git subtree我可以在我的封闭源代码库或开源代码库中修改代码的解决方案,我可以轻松地同步两个存储库之间的更改.我已经在stackoverflow和google中搜索了一个解决方案,但似乎没有明显的解决方案.从概念上讲,这是git subtree应该能够做到的事情,但它只适用于单个子目录.
我已经查看了git-subtree脚本,目的是修改它.
https://github.com/git/git/blob/master/contrib/subtree/git-subtree.sh
在我看来,如果我要修改,subtree_for_commit()我应该能够说服git subtree split考虑不止一个目录进行拆分.但是我对git的了解还不足以理解脚本正在做什么并在不破坏事情的情况下修改它.
如果您对上述问题或任何其他修改指针有任何解决方案git-subtree,请告诉我.