仅共享git存储库的子集

时间:2011-03-28 22:01:01

标签: git

我为我的dotfiles使用git存储库,我想分享它,除了一些文件(例如,其中有一些标识符)。 有没有办法在不创建只包含待共享文件的另一个git存储库的情况下完成它?

提前感谢您的回答。

3 个答案:

答案 0 :(得分:2)

没有。存储库的每次提交都包含提交的所有文件,因此筛选的视图将具有不同的提交标识符。

您可以使用类似git filter-branch的内容,但这实际上会创建分支的副本,为每个原始提交创建一个新提交(如果没有过滤掉)。

可能有一种方法可以自动执行此操作,因此您的分支始终看似与原始分支相同,但没有关键文件。然后,您只需将已过滤的分支推送到某个公共存储库。

但请注意,将基于此存储库的更改合并到原始存储库中并非易事,并且可能意味着为每个存储库应用单独的修补程序。

答案 1 :(得分:1)

你需要制作一个子模块并分享它。

答案 2 :(得分:0)

假设您不需要回复其他的dotfiles,只需将您不想共享的文件添加到.gitignore文件即可。在第一次提交之前执行此操作,这些文件永远不应成为repo的一部分。

如果您已经回复了您的点文件,那么只需将您不想共享的文件复制到其他目录。在您不想共享的每个文件上运行git rm .some_file,以从repo中删除它们。将它们添加到gitignore,提交,然后将它们从其他目录中复制回来。