为何git commit-tree创建的提交无法显示?如何修复?
问题原因
你用git commit-tree创建的提交是悬空提交——它没有被任何分支、标签或HEAD引用指向。git log --all只会遍历所有有引用(分支、标签等)关联的提交链,悬空提交不在这个范围内,因此无法被显示。
另外补充:你之前执行git commit-tree时卡住,是因为该命令默认需要从标准输入读取提交说明,不加-m参数会等待你手动输入,所以出现卡住的情况,加上-m提供提交信息后即可正常执行,这是Git命令的正常行为。
修复方法
有几种简单方式可以让该提交被Git追踪到:
方法1:将当前分支指向该提交
执行以下命令,把当前分支(比如main)直接关联到目标提交:
git reset --hard 5baee21d46db4d47ca3b28fbf617ed9db08d8166
注意:此操作会移动当前分支的HEAD,若工作区有未提交的修改会被覆盖,确保工作区干净后再执行。
方法2:创建新分支指向该提交
如果不想改动当前分支,可以新建一个分支关联目标提交:
git branch orange-commit 5baee21d46db4d47ca3b28fbf617ed9db08d8166
之后再执行git log --all --decorate --oneline --graph就能看到该提交,因为它已被新分支orange-commit引用。
方法3:创建标签指向该提交
用标签标记目标提交也能让它被--all参数识别:
git tag orange-tag 5baee21d46db4d47ca3b28fbf617ed9db08d8166
标签会被--all参数包含,执行log命令时即可显示该提交。
内容的提问来源于stack exchange,提问作者roi_saumon
相关产品推荐
相关产品推荐

