Git 没有';不在任何分支中显示,但在“中”中可用;吉特秀;
我在裸回购协议中有一个提交id。Git 没有';不在任何分支中显示,但在“中”中可用;吉特秀;,git,git-branch,git-commit,git-show,git-reflog,Git,Git Branch,Git Commit,Git Show,Git Reflog,我在裸回购协议中有一个提交id。 git show commit id,显示包含更改的提交 但使用以下命令时,不会显示相同的提交 git branch --contains <commit id> git分支——包含 或 git reflog show--all | grep 提交id可能发生了什么变化?(很抱歉我之前的回答完全脱离主题) 如果您在远程设备上执行git pull或git clone操作,那么git reflog不会执行每次提交,因此此提交可能来自这些操作之一 另
git show commit id
,显示包含更改的提交
但使用以下命令时,不会显示相同的提交
git branch --contains <commit id>
git分支——包含
或
git reflog show--all | grep
提交id可能发生了什么变化?(很抱歉我之前的回答完全脱离主题)
如果您在远程设备上执行git pull
或git clone
操作,那么git reflog
不会执行每次提交,因此此提交可能来自这些操作之一
另外,我想您检查了提交时间不到90天,尽管它可能已经通过默认gc设置进行了gced。(很抱歉我之前的回答,完全脱离主题)
如果您在远程设备上执行git pull
或git clone
操作,那么git reflog
不会执行每次提交,因此此提交可能来自这些操作之一
另外,我假设您检查了提交时间不到90天,尽管它可能已经通过默认gc设置进行了gced。这些提交称为悬挂提交,我相信
git fsck
会显示它们。在运行git gc
或git prune
之前,它们仍然存在于git存储库中。一般来说,git gc
将在repo中有太多松散对象时自动运行,这些对象将打包到一个打包文件中git gc
操作还将在特定时间之前删除danling提交git-gc--prune=now
和git-prune--expire=now
将立即删除这些提交git config--global gc.auto 0
将禁用自动gc运行 这些提交称为悬挂提交,我相信git fsck
会显示它们。在运行git gc
或git prune
之前,它们仍然存在于git存储库中。一般来说,git gc
将在repo中有太多松散对象时自动运行,这些对象将打包到一个打包文件中git gc
操作还将在特定时间之前删除danling提交git-gc--prune=now
和git-prune--expire=now
将立即删除这些提交git config--global gc.auto 0
将禁用自动gc运行 可以创建一个分支,提交它,然后使用git branch-D
强制删除它。在这种情况下,提交将以这种方式丢失。Reflog显示现有引用的日志
此外,您的命令不会检查头部的reflog。尝试
git reflog show HEAD
,如果它还没有被垃圾收集,那么它可能包含提交(例如,如果它已被制成分离的HEAD)。可以创建一个分支,提交给它,然后使用git branch-D
强制删除它。在这种情况下,提交将以这种方式丢失。Reflog显示现有引用的日志
此外,您的命令不会检查头部的reflog。尝试
git reflog show HEAD
,如果它还没有被垃圾收集,它可能包含提交(例如,如果它已被分离为HEAD)。谢谢jolivier,但是如果分支被删除或sha1 id被更改,这应该在reflog中可用90天,我看不到。或者有没有办法找出哪个分支被删除了,或者哪个sha1被替换了?我在裸回购协议中检查了这一点,这个提交是在2天前完成的。提交是通过从Gerrit codereview中挑选一个cherry来应用于克隆的,然后推回到特定分支上的裸回购。但是现在提交id在该分支上不可用,并且我确信该分支没有被删除。另外,没有关于“git reflog”的信息一个可能的原因可能是其他人通过重定基址或其他方式更改了分支,并强行将新分支推送到orgin,而您在不知道更改的情况下强行拉取了此分支。这将导致提交id没有显示在分支或您的reflog中,但如果您没有删除它们,它们应该在您的不可访问对象列表中。谢谢jolivier,但是如果分支被删除或sha1 id被更改,这应该在reflog中可用90天,我没有看到。或者有没有办法找出哪个分支被删除了,或者哪个sha1被替换了?我在裸回购协议中检查了这一点,这个提交是在2天前完成的。提交是通过从Gerrit codereview中挑选一个cherry来应用于克隆的,然后推回到特定分支上的裸回购。但是现在提交id在该分支上不可用,并且我确信该分支没有被删除。另外,没有关于“git reflog”的信息一个可能的原因可能是其他人通过重定基址或其他方式更改了分支,并强行将新分支推送到orgin,而您在不知道更改的情况下强行拉取了此分支。这将导致提交id不会显示在分支或您的reflog中,但是如果您没有删除它们,它们应该在您的不可访问对象列表中。谢谢Zheng,我已经禁用了gc,因此如果这是悬空提交,它应该在那里。我正在运行“git fsck--无法访问| grep 98d0d”。。。让我看看我是否能找到任何我在fsck中看不到提交id的内容--无法访问。。。这很奇怪。提交没有显示在reflog、fsck、fsck中——不可访问的分支,而是显示在“git show”中。还有其他建议吗?谢谢郑,我已经禁用了gc,所以如果这是一个悬而未决的提交,它应该在那里。我正在运行“git fsck--无法访问| grep 98d0d”。。。让我看看我是否能找到任何我在fsck中看不到提交id的内容--无法访问。。。这很奇怪。提交没有显示在reflog、fsck、fsck中——不可访问的分支,而是显示在“git show”中。还有其他的建议吗?答案不错。我不得不想象这几乎肯定是事实。回答得很好。我不得不想象,情况几乎肯定是这样。
git reflog show --all | grep <commit id>