准确的git提交

Osc*_*son 1 git version-control github

如果我有一些像这样的代码

/**
 * blah blah blah
 */
...some codes...
/**
 * yadda yadda
Run Code Online (Sandbox Code Playgroud)

然后我补充说

/**
 * blah blah blah
 */
...some codes...
/**
 * blah blah blah
 */
...some codes...
Run Code Online (Sandbox Code Playgroud)

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

 +  * blah blah blah
 +  */
 +  ...some codes...
 + /**
Run Code Online (Sandbox Code Playgroud)

有没有办法告诉git,"嘿,那不对.再试一次."?我知道,--patience但这似乎只是为了git diff和我的生活,它永远不会正常工作.我知道它不是非常重要,但它使得差异和提交日志,特别是在GitHub上,更加干净.

Gre*_*ill 5

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

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

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

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