我过去曾经使用过filter-branch,但现在我正在寻找一个解决方案来公开私有存储库的文件夹,方法是让它和其他人一起创建拉取请求。
假设我有项目A而项目A有folderA,我需要从A创建一个只包含folderA的fork B.
这样做的好方法是什么?我无法找到一个简单的解决方案,而无需分配整个存储库,然后应用过滤器分支。
编辑:分叉将公开
谢谢:)
答案 0 :(得分:2)
你有几种可能性。
folderA
,即递归地将其复制到外部子目录。然后在该子目录中运行git init
,像往常一样在github上发布新创建的存储库。然后,您需要从项目中删除folderA
的内容(git rm -rf folderA
),然后将其重新附加为git子模块(例如,请参阅this tutorial),然后将更改提交到主要项目。在这种情况下,您的外部用户根本不知道folderA有一些先前的历史记录,但当然,从这个"第0天和第34天开始。 folderA
将拥有自己的历史记录,您可以在shell项目中跟踪它。
folderA
目录条目替换为名为的特殊类型的条目,从而形成folderA
的新历史记录gitlink(实际上gitlink
只是一个任意的SHA-1,git submodule
使用它来引用"外国存储库中的修订版。我无法轻易地称这种方法,但它确实可行,如果你真的需要公开folderA
之前的历史,那就是它的发展方向。
folderA
中的更改合并。可能你不会发现这种方式很方便,但它有可能,但有时也很有用。答案 1 :(得分:0)
我不认为有一个简单的解决方案"这个问题比你提出的问题更好(fork / filter-branch)。 Git不像SVN,它不支持"稀疏克隆" (存储库的部分克隆)。