远程选择性忽略git?

6

假设我有一个项目,它既在公共开源存储库上,也在私人开发存储库上。一些在开发存储库中的文件会包含一些如数据库密码之类的敏感信息,我不希望这些信息被公开。那么,在两个远程仓库之间分享安全文件的最佳方法是什么?我想到了一种只应用于公共存储库的.gitignore文件,这种方法可行吗?如果不行,还有其他建议吗?


通常使用过滤驱动程序来处理此问题,例如在https://dev59.com/-nA75IYBdhLWcg3wZ4Fr#3318202中。 - VonC
3个回答

3
也许可以将更敏感的文件放在一个不同的仓库中,将其作为子模块添加到原始仓库中,并仅授予私有开发人员对私有仓库的访问权限。

0
如果有一些不应该公开的文件,为了安全起见,请不要将它们放在代码库中,或者使用密码加密这些文件!最好的方法是将未共享的文件放在一个单独的代码库中,该代码库可以存在于私有开发版本中:
BASE_DIR/.git
BASE_DIR/private/.git

这里的 BASE_DIR 包含所有公共文件。BASE_DIR/private 包含私有文件。

当您只发布数据而不是存储库(包括其所有历史记录)时,您可以简单地

git --work-tree=PATH_TO_THE_PUBLIC checkout HEAD -- .

当新版本到来时。


-1

不要把密码放在源代码控制中,无论如何都应该在 .gitignore 中忽略它们; 通过其他方式分发私有密码文件。

(而且,没有办法只在某些存储库中忽略文件。)


那并没有帮助。我们需要将部署配置放在代码库中,以便根据需要进行更改,并且每个人都知道,而且我们的生产环境是基于Git的,因此所有需要部署的文件都需要在私有代码库中提供。私有数据不应该不在私有源代码控制中。 - Stephen Belanger
@Stephen:问题在于 Git 的运作方式,即使你只改变了一个文件,你也会得到完全不同的提交哈希值集合,从而得到完全不同的历史记录。Git 在历史记录层面上并不区分你的公共仓库和私有仓库。 - Amber
1
@Stephen:你可以创建一个单独的分支,其中包含添加私有文件的提交,并且永远不要将该分支发布到公共存储库中。当开源部分更新时,您可以将其合并到“私有”分支中,以保留私有文件。 - Amber
1
@Stephen 如果你真的需要将敏感文件存储在某个仓库中,那么你可以使用子模块,然后在部署时将文件链接/复制到它们所需的位置。 - MBO

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接