4

据我所知,git 通过保存更改的行来存储修订。运行文本文档,如文档或冗长的 LaTeX 文件,通常有很长的行或在 80 个字符后被强制中断。当一个词被改变时,它会导致改变的行的巨大差异,从而使 git 存储库膨胀。

是否可以通过单词而不是行使 git 工作?我知道有git diff --color-words哪些以更漂亮的格式输出更改的单词。但这不会影响这些更改在内部存储的方式。

我也知道重新格式化文档以使其更适合版本控制的做法,方法是在每个句子后开始一个新行。但这会严重扰乱大多数文档的格式,同时仍然只会将问题缩小到句子长度。

换句话说,我可以将 git 配置为在创建修订时考虑空格字符而不是换行符吗?

4

2 回答 2

4

Git 不存储差异。SVN 可以。Git 通常存储完整的 blob。它还进行打包以节省空间(在运行git gc或推送到远程时),但同样,这不是基于行的,因为它使用二进制增量格式。唯一令人讨厌的是您注意到差异输出。但这与 Git 存储数据的方式无关。您可能想阅读git 二进制差异算法(增量存储)是否已标准化?包文件规范和ProGit 的第9.29.4节。

于 2013-01-31T12:48:06.313 回答
2

没有比将段落分成几行更好的解决方案了。

我知道有 git diff --color-words 以更漂亮的格式输出更改的单词。但这不会影响这些更改在内部存储的方式。

这个答案对在 git 中处理 LaTeX 以及与 git 一起使用有很好建议latexdiff

于 2013-01-31T12:20:09.300 回答