当我尝试提交更改时,我收到此错误:
error: object file .git/objects/31/65329bb680e30595f242b7c4d8406ca63eeab0 is empty
fatal: loose object 3165329bb680e30595f242b7c4d8406ca63eeab0 (stored in .git/objects/31/65329bb680e30595f242b7c4d8406ca63eeab0) is corrupt
Run Code Online (Sandbox Code Playgroud)
不知道如何解决这个错误?
编辑
我试过git fsck我有:
error: object file .git/objects/03/dfd60a4809a3ba7023cbf098eb322d08630b71 is empty
fatal: loose object 03dfd60a4809a3ba7023cbf098eb322d08630b71 (stored in .git/objects/03/dfd60a4809a3ba7023cbf098eb322d08630b71) is corrupt
Run Code Online (Sandbox Code Playgroud) 我做了一个"git rm -rf".(尝试清除我在执行"git add"后删除的文件的缓存.)而不考虑git会物理删除文件.我还没有初始提交/分支.
$ git init
$ git add .
Run Code Online (Sandbox Code Playgroud)
我记得加上我的".gitignore".然后,出于懒惰,也没有费心去查找我所做的正确命令:
$ git rm -rf .
Run Code Online (Sandbox Code Playgroud)
现在git跟踪的每个文件都消失了.哎呀.
如何使用悬空blob恢复文件
$ git fsck
notice: HEAD points to an unborn branch (master)
notice: No default references
dangling blob 45cb2316b079df7898a28bab1389c87d37de4da5
dangling blob 06b9d0f91bb0643a54ec027efc0efd6645d95326
dangling blob c6c828230bc129da40928d55297577421c6f2e79
dangling blob 087b296f5ae80151fb0d6150927ebe8049ed7706
dangling blob c957743cb7ea533ce772d178394ce9f656b17b7c
dangling blob 0ea745612b105394f5cd5c0119a829de98a0a954
dangling blob 8fb1fa03c12cd56d4e2284008e92a3666bc60b93
dangling blob cf49a6cf77ac792b108577c01ccf88cb2c28228c
dangling blob 93817d9eeefea6ea894544e78b0e0970aa5adc46
dangling blob 94a9ed024d3859793618152ea559a168bbcbb5e2
dangling blob 574b7130959f2278c88946cf385fc49adcdf28c2
dangling blob 582f5bceb8b35c01fd7442678a3cd7e1088b7957
dangling blob d9fb7ca5775745b4332f630400d52c979aab35cd
dangling blob 2087b182bf8b4b8d5ed8fe45a50c7661bda25feb
dangling blob 6109baf32d04410c84d860501057a7f55a13f9dd
dangling …Run Code Online (Sandbox Code Playgroud) 我经常读到Git使用有向无环图(DAG)数据结构,每次提交都是一个节点,而像分支和标签这样的东西作为节点的指针.
但是当我尝试使用像gitk这样的工具来显示我的提交历史时,它看起来更像是树而不是图形,因为每个父子关系都是单向的.
那么,DAG和树之间有什么区别,特别是关于Git?
当我做一个git pull,从git bash,终端通常运行拉,更新我的本地,然后挂起.我不确定它是否在等我做某事,但我通常会退出CTRL-C.之后,我得到一个index.lock阻止我做其他我必须删除的东西.我误解了怎么git pull运作?
以下git命令在我的一个存储库中挂起(不响应):
git status
git diff
git stash
git add
Run Code Online (Sandbox Code Playgroud)
我不能git add让我相信无反应的事实并非仅仅是由于非常大的文件.既然git stash也挂了,我认为这不仅仅是与原点沟通的问题.
git remote show origin显示预期的远程URL.我正在分支机构并检查它是否已重命名.(FWIW,原产地位于bitbucket.)
所有上述命令都按预期在不同的仓库中响应,因此不是因为互联网连接.
还有其他任何疑难解答提示吗?
我有一个小型仓库,有一个主人和一个实验分支,用于尝试一些新功能.我决定不在master上实现这些功能.
当我删除该分支时,实验分支的提交会发生什么git push origin --delete <branchName>?git会保留一些不可访问的残余物吗?如果我记得很清楚,我在该分支上有标签,并将其上传到github.这会导致任何问题吗?
编辑:
我gitk --all按照建议检查,提交图如下所示:
我想删除所有提交的babel分支,我不希望它可以恢复.这可能吗?
有人在错误的分支上提交了一个提交,所以我试图将提交移动到另一个分支.当我尝试回滚提交时,我收到此错误:
[user@server gitrepo]$ git reset --hard 9c2de3c0
fatal: unable to read tree 9c2de3c0af09fc07a84ff84b594beb5a6d489181
Run Code Online (Sandbox Code Playgroud)
该对象看起来很好:
[user@server gitrepo]$ ls objects/9c/2de3c* -al
-r--r--r-- 1 git git 222 Aug 28 12:09 objects/9c/2de3c0af09fc07a84ff84b594beb5a6d489181
Run Code Online (Sandbox Code Playgroud)
为什么不能读取这个对象,我该怎么做呢?
编辑:将我的问题与其他人区分开来:
git fsck -full只显示几个(约20个)悬空斑点和一个悬空提交.这似乎并不特别令人担忧.我一直在尝试通过将一些文件移动到 git LFS 来减小 Git 存储库的大小。再加上几个 100 个命令,这里我们的文件位于 git LFS 中,并且我的 git 提交中不再有这些文件的历史记录。
然而,每当我克隆存储库时,我仍然会下载大约 3GB 的对象。我通过在 Visual Studio Team Services 中创建一个新存储库来解决这个问题,在本地修剪和垃圾收集我的存储库,然后推送到那里后,它减少到 300mb。(在这篇文章中本地执行此操作的命令:Git:什么是悬空提交/blob 以及它们来自哪里?)
但是我无法想象您总是必须删除/重新创建完整的存储库才能删除悬而未决的提交。
我还尝试过执行 git init,然后将其推送到现有存储库上,但它只会进一步增加对象数量。
对于也遇到类似问题的任何人,这些是我执行的用于创建新存储库而不需要悬空提交的命令,但是我想了解如何在现有存储库中执行此操作而不必删除它:
git clone https://avavedse.visualstudio.com/Test/_git/TestRepository
cd blahblah
git reflog expire --expire=now --all
git gc --prune=now
git remote add newrepo https://avavedse.visualstudio.com/Test/_git/TestRepositoryNewEdition
git push newrepo
Run Code Online (Sandbox Code Playgroud) 正在处理一个项目,以在少数大型存储库中对大型二进制文件进行编目。我试图了解在什么情况下您可能有 Blob -> Tree -> nothing .. 本质上是一个未附加到提交的 Blob/Tree。
我正在运行这样的东西:
git rev-list --objects --all | git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)'git log --pretty=tformat:'%T|%h|%s|%aN|%aE'git -C $RepoFolder ls-tree -r <current_commit.id>我发现有些与树相关的 blob 与任何提交无关。
在什么情况下会发生这种情况?