【问题标题】:Right way of tracking a sqlite3 binary file in git?在 git 中跟踪 sqlite3 二进制文件的正确方法?
【发布时间】:2011-07-23 01:03:30
【问题描述】:

我维护了一个 repo 的分支。

一直在跟踪二进制文件(这是一个 sqlite3 文件)的那个 repo。

每次从该存储库中提取时,由于该二进制文件,我都会遇到合并冲突。
解决这种合并冲突的正确方法是什么?

在 git 中管理二进制文件(比如这个 sqlite3 *.db 文件)的正确方法是什么?

【问题讨论】:

    标签: git version-control binary github


    【解决方案1】:

    您可以在当前版本之上定义一个自定义合并驱动程序,指定为always "keep theirs"(复制您正在提取的版本)。

    .gitattributes
    
    mysqlite3.db merge=keepTheir
    

    (话虽如此,请记住binaries aren't always best managed with Git,尤其是经常修改它们时)

    【讨论】:

    • 我找不到 .gitattributes。我必须在 $GIT_DIR/info/attributes 中创建一个文件吗?
    • @shadyabhi: 不,你必须在你希望它应用到的东西的父目录中创建一个名为 .gitattributes 的文件(可能是你项目的顶层),就像使用.gitignore$GIT_DIR/info/attributes 仅适用于您的特定克隆库,而不适用于其他库,因为它显然未被跟踪。
    • @shadyabhi:问题stackoverflow.com/questions/1910444/…给你一个更详细的例子。
    • @Jefromi 使用“$git add”添加 .gitignore 和 .gitattributes 之类的文件吗?另外,我对这一切都很陌生,请您指导一个很好的文档。我看到的大多数教程都没有给出合并和解决冲突的好例子。
    • @shadyabhi:是的,这就是重点;您在存储库中跟踪它们,以便存储库的所有克隆都忽略相同的内容(例如构建对象)并使用相同的属性(例如,该文件绝对是文本,以这种方式合并该文件)。对于文档,我将始终推荐手册页。在这种情况下,man gitattributes.
    【解决方案2】:

    我发布了一个工具,可以满足您的要求。它使用自定义差异驱动程序,利用 sqlite 项目工具“sqldiff”,将 UUID 作为主键,并保留 sqlite rowid。它仍处于 alpha 阶段,因此非常感谢您的反馈。

    https://github.com/cannadayr/git-sqlite

    【讨论】:

      猜你喜欢
      • 2011-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-23
      • 2016-06-05
      相关资源
      最近更新 更多