据我所知,git通过保存更改的行来存储修订版。运行文档文档(如文档或冗长的LaTeX文件)通常具有很长的行或在80个字符后强制中断。当一个单词被更改时,它会导致更改行的巨大差异,这会使git存储库膨胀。
是否可以通过单词而不是行来使git工作?我知道有git diff --color-words
以更漂亮的格式输出更改的单词。但这并不影响这些更改在内部存储的方式。
我也知道通过在每个句子后面开始一个新行来重新格式化文档以使它们更适合版本控制的做法。但是这会严重混乱大多数文档的格式,同时仍然只能将问题缩小到句子长度。
换句话说,我可以配置git在创建修订时考虑空格字符而不是换行符吗?
答案 0 :(得分:4)
Git不存储差异。 SVN呢。 Git通常存储完整的blob。它还打包以节省空间(运行git gc
或暂停到远程时),但同样,这不是基于行的,因为它使用二进制增量格式。唯一令人讨厌的是当你注意到diff-ouptut。但这与Git存储数据的方式无关。您可能需要阅读Is the git binary diff algorithm (delta storage) standardized?,pack-file specs以及ProGit的9.2和9.4部分。
答案 1 :(得分:2)
除了将你的段落分成几行之外,没有更好的解决方案了。
我知道有输出改变的git diff --color-words 一个更漂亮的格式的单词。但这并不影响这些 更改在内部存储。
This answer有关于使用git处理LaTeX的好建议,以及this one使用git使用latexdiff
。