【问题标题】:Handling just one file with Git使用 Git 只处理一个文件
【发布时间】:2013-11-07 17:29:27
【问题描述】:

我想将数据库文本备份保存到 Git,以便在版本之间进行更改和差异。这将是一个 shell 脚本:

  1. 将数据库脚本获取到文件中。
  2. git 的东西。

“git stuff”可能会使用 github remote add + commit + push 将文件添加到 Git 存储库。

对于 Git 专家来说,处理这个文件的更好选择是什么?我认为这个脚本将在数据库服务器中运行,不需要存储库中的所有文件。我在这里看到了一些选项,例如 git archivegit fetchgit sparse-checkout,但我并没有真正找到最佳选项。

【问题讨论】:

  • 当您说“数据库”时,您所指的数据量大约是多少?
  • 将是一个 MongoDB JS 脚本(Json 对象)。我们的数据库很小,最多 2mb。我认为文件大小不会有问题。谢谢
  • 与您的问题无关,但根据标题来到这里的任何人都可能对Gist 感兴趣。
  • 请记住,每次推送时,git 都会添加整个文件的新副本,而不仅仅是差异。根据您推送的频率,您的 git 存储库可能会变得非常大。
  • @jwygralak67:实际上,这不是真的。在内部,git 将 blob 存储为差异(“增量压缩”)——对于文本文件尤其有效。

标签: git shell database-backups


【解决方案1】:

最好为此使用单独的 git 存储库,尤其是因为您不希望数据库服务器上有任何其他文件。

话虽如此,您只需要git clone 进行初始设置,然后是addcommitpush(假设没有其他人提交到该存储库)。

【讨论】:

  • 主要思想是,在同一个项目存储库中拥有“数据库备份”,我的意思是,项目 A1 的数据库位于项目存储库内的文件夹“_databasebk”中,您可以访问它文件非常快,但是,这也是主要问题,冲突,合并等。您的选择可能是一个很好的解决方案,也许与模块或类似的东西结合使用?
  • 与 svn 不同,git 鼓励您拥有多个存储库,每个项目一个。如果您有需要,您可以将它们与模块组合(不是我个人最喜欢的,因为它们链接到固定 SHA 的方式),或者有一种机制将 db 存储库与您的主要存储库联系起来(脚本或 Makefile ,或任何适用于您的情况的东西,将数据库存储库克隆到内部或与主存储库并排,并在需要时更新它)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-24
  • 1970-01-01
  • 1970-01-01
  • 2016-10-14
  • 1970-01-01
  • 2011-03-03
相关资源
最近更新 更多