我只是将我的私有存储库放在bitbucket上,以便将一个小型rails应用程序放入公共域 - 进入一个公共github仓库。私有存储库包含db / development.sqlite3文件,以方便和备份。现在看到我的应用程序中有少量用户,我认为它不负责在公共领域提供他们的电子邮件地址等。现在我已经继续并从git存储库中删除了缓存的development.sqlite3
文件,并将这些更改推送到两个repos。但是,我想继续将sqlite3数据库推送到我的私有存储库。它非常方便我的小应用程序。
我发现了一些令人失望的模糊引用.git/info/excludes
文件作为一种可能阻止git将某些文件推送到某些存储库的方法,即here (SO question)和here
我甚至不确定这些"解决方案"甚至允许我做我想做的事情,即,导致git忽略一个存储库的某些文件类型,但不能忽略同一个提交中的另一个文件类型。它甚至看起来不合逻辑。所以也许这是不可能的。请指教。
请注意: 如果这个问题没有答案,即如果不可能通过上述方法或其他方式,如果你喜欢,你是否认为我应该完全取消这个问题。我很矛盾。
答案 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的差异 工作目录元数据属性。