2010-11-23 105 views
5

我有一个Git仓库,有很多历史。我想让其他人可以访问它,但其中的一个目录包含无法分发的专有代码。有什么办法可以让克隆版本库(包含历史记录)排除该目录吗?克隆Git仓库不包括子目录

加分:我还希望能够将对旧的主存储库中创建的“公共”代码的更改合并到克隆中。

回答

1

除非您愿意重写每个提交哈希值,否则不能这样做。如果您决定重写存储库的历史记录以排除该目录,则必须与作为存储库贡献者或使用者的任何人协调。

您将需要filter-branch来调整树。该脚本需要最初创建一个存储库,该存储库是存储库中的子模块。只要有变化,它就需要提交到内部存储库,并调整父级中的子模块引用,并在该级别提交该模块引用。

您现在可以发布回购,并且没有人能够执行git子模块操作,但这正是您想要的。