Git能否用于非文本文件(如Word文档或XLS等)的版本控制?

30

最近我在学习GIT版本控制系统,它对于纯文本文件似乎非常有效,因为您可以添加一行,回到以前的版本并分支,修订文档并移除您刚添加的那一行。

我主要使用Excel进行编程并在Word中撰写文档。GIT能否用于管理这些文件的版本(显然不是文件内的内容,而是文件本身)?

1个回答

36

Git在某种意义上是不可知的,因为它不关心您将哪些文件纳入版本控制。

当Git无法识别文件类型时,它会将其视为二进制数据进行版本控制; 因此diff等命令仅会声明这些文件有几个字节的差异。

因此,回答您的问题:是的,Git可以用于管理Word文档等文件的版本,此外,使用gitattributes,您甚至可以对Word文档进行比较,尽管我不确定是否适用于xls文件。

要了解更多关于gitattributes提供的可能性以及查看一些比较Word文件的示例,您可以阅读Gitpro书中的自定义Git-Git属性章节。


1
但是,我认为每个人都有一个问题,当在Word文档中添加新行时,它是否会将该行添加到文档中(即跟踪该行),还是复制整个新文档。显然,Git无法理解每种文件格式,对吧? - juztcode
1
我认为在代码文件(如.cpp)中,只会添加或删除更改的新行。例如,如果我在第3行添加了代码“int a = 3”,它不会复制整个文件,而只会将其作为新更改存储。这对于代码文件可能是可能的,但对于其他类型的文件则不行。 - juztcode
3
我明白你为什么那样假设,但是这不是git的操作方式。从概念上讲,git始终存储完整的快照,而不是差异。git可能在其上进行一些智能优化,以避免存储成千上万个版本,但最终快照是“真相”的来源。[我上面链接的回答详细介绍了git如何实现这一点]。 - Sascha Wolf
因为Git将这些文件视为二进制文件,因此您将无法合并、挑选或还原特定的提交。但是,它完全可以用于存储版本,并简化备份重要文件夹的过程,您可以在不同驱动器上创建远程仓库,甚至可以在云上创建私有仓库,并定期推送更改。您不仅可以获得备份,还可以还原到旧版本! - Mathieu Turcotte
@SaschaWolf 实际上我按照你的链接操作了,但是VonC在那里的回复说相反的话。“Git确实使用差异来进行存储。” 我想大多数人都从概念上理解版本控制会给你提供快照,但GIT提供这一点的方式似乎使用了差异。 - ACCL
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接