gpt4 book ai didi

git - 为什么 git log —all 显示已删除的提交?

转载 作者:行者123 更新时间:2023-12-01 23:43:52 28 4
gpt4 key购买 nike

我在一次提交中使用了 git reset —-hard sha 来剥离/删除多个提交,然后使用了 git gc --prune=now。当我执行 git log --pretty=oneline --abbrev-commit 时,它会返回我在重置命令中使用的 sha 的最新提交。这就是我所期待的。

但是,我随后执行了 git log --pretty=oneline --abbrev-commit —-all 并且它返回了我认为我剥离的提交。为什么这段历史还在这里?

预计到达时间:这些提交都不存在于主存储库中

最佳答案

这是 split 头发实际上可能很重要的情况之一。

当您说您“剥离”了一些提交时,这是不准确的。更具体地说,您从发出 reset 命令 时 check out 的分支的历史记录中删除了这些提交。如果任何其他引用(另一个分支、标签、当前存储、各种其他东西)可以到达这些提交,那么它仍然可以。

git log--all 选项表示显示所有引用的历史 - 而不仅仅是当前分支(您从中删除了提交)。您可以使用 git log --graph --all 的输出来找出哪些 ref 仍然到达您的提交。如果您可以在您的环境中使用 gitk,那可能是一个更好的可视化。

作为附加说明,您的 gc 尝试将失败,即使没有 refs 仍然可以到达有问题的提交,因为 reflogs 仍然可以到达它们。在移动所有 refs 以便不再“知道”这些提交之后,您还必须使所有受影响的 reflogs 过期。

关于git - 为什么 git log —all 显示已删除的提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64584382/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com