fak*_*eft 8 git version-control dvcs
这可能更适合作为Git使用的任何问题跟踪器/论坛中的问题,但我认为我首先得到一个SO确认/解释:
我有一个repo跟踪一堆安装程序可执行文件.
假设foo-1.0.exe已经在repo中.
我现在在同一目录中添加foo-2.0.exe(git add foo-2.0.exe).接下来,我删除foo-1.0.exe(git rm foo-1.0.exe).
我希望Git状态向我显示一个添加的文件和一个已删除的文件.相反,我明白了:
在分支主机
上要提交的更改:(
使用"git reset HEAD ..."
取消暂停)
重命名:foo-1.0.exe - > foo2.0.exe
这对我来说是一个WTF ......是Git使用某种启发式来猜测2.0是对1.0的更新......我可以看出这可能是有意义的,但我不认为我希望它能做到这一点案件.
Gre*_*ill 15
你是正确的Git使用启发式.Git只跟踪内容,因此存储库只知道曾经有一个foo-1.0.exe,现在有一个foo-2.0.exe.在您的情况下,git status使用可用信息来猜测可能存在重命名(加上一些小的更改,您的两个文件可能非常相似).此猜测不会影响存储库中记录的内容.
这种仅跟踪内容而非跟踪增量的理念允许Git发展并提供更好和更好的工具来浏览存储库历史.最终,Git将提供一种方法,通过重命名或重构或任何其他代码修改,在函数甚至行级别跟踪特定代码位的演变.这可以在存储库不必预先存储该信息的情况下完成.