是否可以像下面的 ascii-art 那样构造一个循环的 git 历史记录?
A (root)
| H<-G
| / \
VL \
C F
\ /
\ /
D->E
在哪里C
是 A
的 merge 提交和 H
,但是H
本身是 C
的后代
最佳答案
每个提交 ID 都是某些内容的 SHA-1 哈希值,其中包括其直接祖先的提交 ID,因此通常您需要知道祖先的 ID,然后才能找到可以作为其后代的 ID。因此,没有地方可以开始构建循环。
能够构建一个短循环结构(其中“短”意味着循环中少于 2^64 次提交)将构成正在使用的哈希函数的中断。
众所周知,SHA-1 在抗碰撞方面会被破坏,可以想象这种破坏背后的技术可以适应构建一个循环。但目前尚不清楚如何做到这一点,而且肯定不仅仅是将一些现成的密码分析组件插入在一起的问题。
关于git - 提交可以是 git 中它自己的祖先吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13101359/