git - 提交可以是 git 中它自己的祖先吗?

标签 git

是否可以像下面的 ascii-art 那样构造一个循环的 git 历史记录?

A (root)
|  H<-G
| /    \
VL      \
C        F
 \      /
  \    /
   D->E

在哪里CA 的 merge 提交和 H ,但是H本身是 C 的后代

最佳答案

每个提交 ID 都是某些内容的 SHA-1 哈希值,其中包括其直接祖先的提交 ID,因此通常您需要知道祖先的 ID,然后才能找到可以作为其后代的 ID。因此,没有地方可以开始构建循环。

能够构建一个短循环结构(其中“短”意味着循环中少于 2^64 次提交)将构成正在使用的哈希函数的中断。

众所周知,SHA-1 在抗碰撞方面会被破坏,可以想象这种破坏背后的技术可以适应构建一个循环。但目前尚不清楚如何做到这一点,而且肯定不仅仅是将一些现成的密码分析组件插入在一起的问题。

关于git - 提交可以是 git 中它自己的祖先吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13101359/

相关文章:

git - 是否可以在 Gitolite 中实现基于 repo 的 Hook ?

git - 将 Mercurial 文件夹转换为 Git 存储库

git - 在 Github 项目中搜索代码

Git分支切换不改变代码文件夹文件

git - 有没有办法告诉 git-status 忽略 .gitignore 文件的影响?

切换分支时 Git 出现歧义警告

apache-flex - git + Flash Builder 工作流程 : how do I set it up so git works smoothly?

git - 如何在本地 merge 时更改 `git merge --squash` 默认模板?

python - 在 Python 中的 msysgit 上询问用户名时获取输出(在 Windows 上)

git - 命令 "git status -u no"也过滤跟踪文件