git: 比较二进制文件

git: comparing binary files

我需要一些帮助,git 如何处理用于推送和拉取的二进制文件?因为我有 2 个二进制文件,所以我不想覆盖它们。我想得到他们的差异。这可能吗?怎么可能?

Git 将以与处理文本文件相同的方式处理二进制文件以进行推送和拉取。但正如 this excellent blog 指出的那样,出于多种原因,您应该避免将二进制文件添加到您的存储库中。首先,对二进制文件进行比较会给你一个毫无意义的结果。如果 diff 完全干净,那么您就会知道您的本地副本和 repo 是相同的。但是如果 diff 显示变化,您可能无法弄清楚这些变化代表什么。

此外,二进制文件往往很大,并且您的存储库中的二进制文件太多会使克隆变得困难。最重要的是,如果您想从您的存储库中删除一个二进制文件,这可能需要一些工作。

二进制文件的数量和大小并不重要。您应该对未生成的资产进行版本控制。对于 真正 大文件(通常是未压缩的视频等),您可能想要使用其他东西来管理精灵表、图像、小音频剪辑、PDF 文件等内容,git 将在一些警告下正常工作。

  1. 普通的文本差异没有用。 Git 在他们的网站上有一个 attribute system which allows you to, among other things, use custom differs so it might be possible. Github added things like image diffing,因此您可以看到图像之间的差异。

  2. 当 git 打包其数据库中的对象时,它们是增量压缩的。这意味着即使你有两个 1GB 的文件,一旦你打包了存储库(就像你推送时自动完成的那样),总的存储库大小很可能会大大小于 2GB。

除此之外,我认为没有任何问题。您仍然可以跟踪二进制资产的修订以及良好的提交日志,这可能是一件有用的事情。