如何使用 .git/info/excludes 来防止像 development.sqlite3 这样的安全文件被推送到



我只是把我托管在bitbucket上的一个私人存储库,用于一个小的rails应用程序,放到公共领域 - 到一个公共github存储库中。私有存储库包含db/development.sqlite3文件,以方便和备份目的。看到现在我的应用程序上有少量用户,我认为在公共领域提供他们的电子邮件地址等是不负责任的。现在,我已经从 git 存储库中删除了缓存的development.sqlite3文件,并将这些更改推送到两个存储库。但是,我想继续将 sqlite3 数据库推送到我的私有存储库。对于我的小应用程序来说,它非常方便。

我发现了许多令人失望的模糊引用.git/info/excludes文件,作为潜在地防止 git 将某些文件推送到某些存储库的一种方式,即这里(SO 问题)和这里。

什至不确定这些"解决方案"是否允许我做我正在尝试做的事情,即导致 git 忽略一个存储库的某些文件类型,而不是同一提交中另一个存储库的某些文件类型。这甚至看起来都不合逻辑。所以也许这是不可能的。请指教。

注意:如果这个问题没有答案,即如果通过上述引用的方法或其他方法是不可能的,如果您愿意,请评论您是否认为我应该完全删除这个问题。我很矛盾。

也许它可以通过post-checkout钩子来实现。

也不要将 sqlite3 数据库推送到私有存储库。将其存储在本地计算机中的某个位置。创建一个post-checkout钩子,当你在 git 存储库中运行git checkout时,它可以将数据库复制到存储库中。

现在,我已经删除了缓存的 development.sqlite3 来自 Git 存储库的文件。

提醒一下,我想知道您是否已从整个提交历史记录中删除了数据库。如果您不介意它仍然可以签出,请忽略它。

参考:

结账后

更新后运行 git 签出时调用此钩子 工作树。钩子被赋予三个参数:引用 以前的 HEAD,新 HEAD 的引用(可能有也可能没有 已更改),以及指示结帐是否为分支的标志 签出(更改分支,标志=1)或文件签出(检索 索引中的文件,标志=0)。此钩子不能影响 git 结帐。

它也在 git 克隆之后运行,除非 --no-checkout (-n) 选项 被使用。给钩子的第一个参数是空引用,即 其次,新 HEAD 的 ref 和标志始终为 1。

此钩子可用于执行存储库有效性检查, 自动显示与上一个 HEAD 的差异(如果不同或已设置 工作目录元数据属性。

最新更新