Git使用什么算法来确定某些文件是否被重命名?
这就是git status几分钟之前产生的:

标有黄色框的信息不正确.实际上没有这种重命名.文件views/file/create.php并views/file/index.php在一组全新的两个文件后半小时被真正删除 - views/logo/create.php并且views/logo/index.php已创建.
这两个文件集看起来(对于Git)非常相似,但事实仍然是 - 这些不同,重命名的文件.这是一组完整的新文件,在删除第一组文件之前约半小时在不同目录中创建.
由于Git提供的信息不正确,我想满足我的好奇心,这就是我要问的原因.
Rah*_*thi 12
来自维基百科:
重命名是隐式处理而不是显式处理.CVS的一个常见抱怨是它使用文件名来标识其修订历史记录,因此如果不中断历史记录或重命名历史记录从而使历史记录不准确,则无法移动或重命名文件.大多数CVS之后的版本控制系统通过为文件提供一个独特的长期名称(一种inode编号)来解决这个问题.Git没有记录这样的标识符,这被认为是一个优势.[34] [35] 源代码文件有时被拆分或合并以及简单地重命名,[36]并将其记录为简单重命名将冻结对(不可变)历史记录中发生的事件的不准确描述.Git通过在浏览快照历史时检测重命名而不是在制作快照时记录它来解决问题.[37] (简单地说,给定修订版N中的文件,修订版N-1中的同名文件是其默认祖先.但是,当修订版N-1中没有同名文件时,Git会搜索仅存在的文件在修订版N-1中,它与新文件非常相似.)但是,每次审查历史记录时,它确实需要更多的CPU密集型工作,以及许多调整启发式的选项.这种机制并不总是有效; 有时,使用同一提交中的更改重命名的文件将被读取为旧文件的删除和新文件的创建. 开发人员可以通过 单独提交重命名和更改来解决此限制.
| 归档时间: |
|
| 查看次数: |
1674 次 |
| 最近记录: |