如何使用.git / info / excludes来防止像development.sqlite3这样的安全文件被推送到某些存储库而不是其他存储库?

时间:2016-07-07 12:51:04

标签: git

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

我发现了一些令人失望的模糊引用.git/info/excludes文件作为一种可能阻止git将某些文件推送到某些存储库的方法,即here (SO question)here

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

请注意: 如果这个问题没有答案,即如果不可能通过上述方法或其他方式,如果你喜欢,你是否认为我应该完全取消这个问题。我很矛盾。

1 个答案:

答案 0 :(得分:1)

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

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

  

现在我已经继续并删除了缓存的development.sqlite3   来自git存储库的文件。

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

参考:

  

结账交

     

在更新后运行git checkout时会调用此挂钩   工作树。钩子有三个参数:参考   之前的HEAD,新HEAD的参考(可能有也可能没有   改变),以及表明结账是否是分支的标志   checkout(更改分支,flag = 1)或文件签出(检索a   来自索引的文件,flag = 0)。这个钩子不能影响结果   git checkout。

     

除非使用--no-checkout(-n)选项,否则它也会在git clone之后运行   用来。赋给钩子的第一个参数是null-ref,即   第二,新HEAD的参考和标志始终为1.

     

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