准确的git提交

时间:2013-08-08 00:55:13

标签: git version-control github

如果我有一些像

这样的代码
/**
 * 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上更加干净。

1 个答案:

答案 0 :(得分:5)

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

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

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

  1. 在Git存储库的深处,在.pack个文件中,Git使用各种delta编码方法来存储类似对象之间的差异,从而减小存储库的大小。但是,它位于比文件存储更低的级别,并且不是源文件之间的实际差异。
相关问题