git只对文本文件/源代码有用吗?

Omi*_*_11 11 git synchronization

一个非常菜鸟的问题.

在我的整个项目中使用git也是好的(作为不同存储之间的同步,版本控制不是主要的一点),包括图像,pdf,Word文档,甚至可能是一些exe文件?

它如何跟踪pdf,图像,exe文件的变化,如果有的话?如果它只是因为与HEAD版本存在一些差异而存储整个更改的文件,那么在几次提交后存储库可能会变得非常大.或者它是否仍然只能保存文本文件以外的文件中的增量更改?

底线:对于大型项目的同步,git是否良好(或至少可以接受)?对我而言,如果它不比Dropbox等差,那就足够了(就最终结果而言,GUI不是问题).

DrK*_*liN 6

Git可以看到你改变了你的非文本文件,但在这种情况下你将无法获得最好的git.使用文本文件,您可以看到不同版本/提交之间的实际差异.

话虽这么说,你可以尝试这个解决方案在git中的图像差异.我确信应该有软件来显示您可能需要的其他文件类型之间的差异,这将有助于检查差异.

与dropbox相比,git应该更好,因为您可以使用提交消息来说明在特定更改中执行的操作,并且您可以创建功能分支; 但由于它的目的,它有点复杂,即跟踪版本之间的源代码差异.

EDIT:

没有,̶Git不会保存的递增量,非文本文件,̶但同样没有Dropbox的,̶据我̶k̶n̶o̶w̶.̶

它看起来像是git将非文本文件存储为字符串,所以是的,它应该只跟踪差异.因此,任何好的difftool就像meld或者Beyond Compare应该能够分辨两个图像之间的区别,例如.例如,我能够看到两个png图像之间的差异Beyond Compare.

它似乎也可以很好地处理PDF文件,但是,与exe文件一样,您不应该使用版本控制来跟踪这些文件类型.而不是PDFs,跟踪他们的源代码 - 例如LaTeX文件(纯文本).由于它们的性质,编译文件(如exe文件)不适合版本控制.这样做的原因是,即使您直接编辑文件的字符串,您也无法完成太多 - 您应该编辑源代码.


bor*_*jab 5

二进制文件可以属于以下类别之一:

  1. 可以由源代码复制的二进制文件。存储和跟踪它们毫无意义。通常,您无需编辑.exe文件即可进行更改。只需确保存储所有需要的构建脚本即可复制该构建并将二进制文件添加到.gitignore中。

  2. 可以编辑和比较的二进制文件。例如,办公文件。有一些解决方法,例如将它们转换为此处显示的文本。一些GIT IDE可能允许外部工具进行比较。

  3. 可以编辑但难以比较的二进制文件。您如何表示两个视频的差异?可能但很难。根据大小,我会将文件添加到GIT。您始终可以获得GIT的大部分好处,例如跟踪不同版本,知道何时更改了一个文件等。您付出的代价是存储库大小更大。比较将需要人类反正打开文件。

  4. 通常不会被编辑的二进制文件,它们被用作输入。例如,一个.jar文件作为依赖项。在这种情况下,您需要此二进制对象是什么以及如何获取它的元数据。您可以尝试使用像Maven这样的系统来跟踪存储pom.xml的依赖项,并将二进制文件添加到gitignore。其他文件可以通过手动Dependecies.txt文件进行跟踪(此版本需要My.Lib1.jar版本10.32.3 ...)。您将需要纪律以每次更改来更新文件。它将帮助您了解二进制文件在每个版本中的变化位置。