为什么在我使用命令完成提交后,管道文件仍然在暂存区域中。 下面是我所做的事情的图片,按时间顺序排列。我唯一注意到的是 .git/refs/heads/master 中没有任何内容,即未指定分支的 HEAD,因此我的 log 命令有问题。我知道 HEAD 仅需要控制上一次提交到下一次提交,它是指向分支主节点的指针,因此我们有一些链表,但我不明白为什么 Git 程序看不到舞台已承诺。一些解释是,对于 git status,他实际上使用与 git log 类似的代码来查看提交的所有内容,因此由于没有 HEAD 而无法找到它,他说还没有提交。 设置管道命令后的状态 [工作](https://i.sst[日志
将文件添加到树后提交树](https://i.sstatic.net/z0kVZ25n.png)atic.net/v7AcUo7C.png)
位于 master 分支上; master 分支上没有 提交(它是“未出生的”,这意味着它是一个附加到没有提交的名称)。 使用管道命令在主分支上创建
is的根提交的方法是使用此模式:
$ tree=$(git write-tree)
$ commit=$(echo 'Initial commit' | git commit-tree $tree)
$ git update-ref HEAD $commit
那个
update-ref
步骤是你遗漏的。在你这样做之前,主分支指针仍然只是坐在那里,不指向任何东西(正如我所说的“未出生”)。
然后,您将为每个后续提交执行此操作,除非这些提交也有父级。即使他们这样做,您仍然需要更新分支指针。
git commit
感谢有人提供解决方案,但我找到了我的解决方案。我给出的假设是正确的 假设:为了进行控制,git 必须(没有强调)对于哪个起点,所有节点(提交对象)都是平等的、同龄的并且无法决定先访问谁,或者一次也没有。我在默认为: git checkout ".git/refs/parentCommitName" 后解决了问题。也就是说,我在文件父提交名称(HEAD)中设置了自己的提交父级。