我有一个repo,当我运行git fsck --full
时,我得到了一长串损坏的提交ID:
Checking object directories: 100% (256/256), done.
Checking objects: 100% (861/861), done.
error: Could not read 0f514378e088c610cbeb8b047c63d4209736d1f9
failed to parse commit 0f514378e088c610cbeb8b047c63d4209736d1f9 from object database for commit-graph
error: Could not read 1e77fe5a6c4bec9bc9bd7ac5c00f2bbe98249b44
failed to parse commit 1e77fe5a6c4bec9bc9bd7ac5c00f2bbe98249b44 from object database for commit-graph
error: Could not read 2a86db8a8c83ac0fdb5050efa63b518fbeaf8146
failed to parse commit 2a86db8a8c83ac0fdb5050efa63b518fbeaf8146 from object database for commit-graph
error: Could not read 2d898d27a8858cfba7db93f79ada3bdca181758d
failed to parse commit 2d898d27a8858cfba7db93f79ada3bdca181758d from object database for commit-graph
...
error: Could not read fc80facb8f8bf3a5972c51b2e9ae5e63552db2f0
failed to parse commit fc80facb8f8bf3a5972c51b2e9ae5e63552db2f0 from object database for commit-graph
Verifying commits in commit graph: 100% (28/28), done.
我只是不知道如何删除它们。我试了git gc
,git prune
,都不行...
我也有一个提交,可以显示为与git show <commit_id>
的差异,但当我运行git branch --contains <commit_id>
时,没有找到分支,所以我相信这是一个悬空提交,但同样,我尝试了我在谷歌上找到的一切。都不管用。
我试过的命令
git prune --expire now
git gc --prune=now
git filter-branch --force --index-filter "git rm --cached --ignore-unmatch filename --prune-empty --tag-name-filter cat -- --all"
...
3条答案
按热度按时间lymgl2op1#
我在用git-repo-filter修改历史记录后得到了这个错误。使用以下命令修复了此问题:
hrysbysz2#
我已经用以下命令解决了这个问题:
我使用的是Docker Omnibus版本,所以你的命令可能会有点不同。在@hashed后面的路径中,您可以在GitLab项目的admin部分找到您的repo路径。
tv6aics13#
我也有这个问题。结果发现我在.git/objects/pack目录下有两个临时文件“.tmp-xxxx-pack-xxxxxxxx...”。尝试这个在你自己的风险(我会备份你的整个源代码树第一TBH),但我删除了这些.tmp-..文件并重试git fsck -它工作得很好。