1

如果我有一些代码

/**
 * blah blah blah
 */
...some codes...
/**
 * yadda yadda

然后我添加

/**
 * blah blah blah
 */
...some codes...
/**
 * blah blah blah
 */
...some codes...

在“yadda yadda”commanet 之前,git diff 将显示我添加了:

 +  * blah blah blah
 +  */
 +  ...some codes...
 + /**

有没有办法告诉 git,“嘿,那不对。再试一次。”?我知道,--patience但这似乎只适用于 git diff 并且对于我的生活来说它永远无法正常工作。我知道这不是很重要,但它使差异和提交日志,尤其是在 GitHub 上,更加干净。

4

1 回答 1

5

Git 在存储库中存储文件的方式是基于整个文件的。当您询问两个版本之间的差异时,Git从存储库1中检索两个完整文件,并在它们之间运行差异算法。与其他一些源代码控制系统不同,Git 在提交时不会计算或存储文件之间的差异。

这种方法的优点是可以在您请求时轻松更改 diff 的行为。例如,您已经看到--patience使用不同 diff 算法来确定两个文件之间(可能)更好的补丁的标志。

由于文件存储在 Git 存储库中的方式,不可能告诉 Git 以某种方式跟踪自定义差异对齐。

  1. 在 Git 存储库的深处,在.pack文件内部,Git 使用各种 delta 编码方法来存储相似对象之间的差异,从而减小存储库的大小。但是,这比文件存储级别低,并且不是源文件之间的实际差异。
于 2013-08-08T01:23:37.310 回答