如果我有一些像
这样的代码/**
* blah blah blah
*/
...some codes...
/**
* yadda yadda
然后我添加
/**
* blah blah blah
*/
...some codes...
/**
* blah blah blah
*/
...some codes...
在“yadda yadda”漫画之前,git diff将显示我添加了:
+ * blah blah blah
+ */
+ ...some codes...
+ /**
有没有办法告诉git,“嘿,那不对。再试一次。”?我知道--patience
,但这似乎只是为了git diff而对我来说它永远不会正常工作。我知道这不是非常重要,但它会使差异和提交日志,特别是在GitHub上更加干净。
答案 0 :(得分:5)
Git在存储库中存储文件的方式是基于整个文件的。当您要求两个版本之间存在差异时,Git会从存储库 1 中检索两个完整文件,并在它们之间运行diff算法。与其他一些源代码控制系统不同,Git在提交时不会计算或存储文件之间的差异。
此方法的优点是可以在您要求时轻松更改差异的行为。例如,您已经看到--patience
标志使用不同的diff算法来确定两个文件之间(可能)更好的补丁。
由于文件存储在Git存储库中的方式,不可能告诉Git以某种方式跟踪自定义差异对齐。
.pack
个文件中,Git使用各种delta编码方法来存储类似对象之间的差异,从而减小存储库的大小。但是,它位于比文件存储更低的级别,并且不是源文件之间的实际差异。