如何解压缩包文件的所有对象?
我刚刚克隆了一个远程存储库,所以我的本地存储库当前不包含任何松散的对象,只包含.pack和.idx文件.
我试过跑git unpack-objects < .git/objects/pack/pack-.pack,但没有任何反应.
我做错了什么?还有其他命令吗?
我今天试图打开我的存储库,但它没有提交任何提交历史记录.我试过的一切(git status,git log,git checkout ......)都引发了一个关于腐败对象的错误.
我在网上研究了这个问题并找到了Linus Torvalds 的文章,但在他发现链接ID损坏的地方迷路了:我的文件ID,树或blob都没有与错误消息引发的罪魁祸首相匹配.
然后我回到文章关于恢复"硬盘故障损坏的git对象"和(在将罪魁祸首对象移开之后)继续工作直到
$ cat packed-refs
Run Code Online (Sandbox Code Playgroud)
那时我的电脑说:cat: packed-refs: No such file or directory
我跳过那一步并做了
$ git fsck --full
Run Code Online (Sandbox Code Playgroud)
并获得了适当的输出,但后来我应该将罪魁祸首(或我所指的罪魁祸首,错误引发的sha1 ID)从备份存储库复制回主存储库,然后复制丢失的对象据我所知,备份存储库进入主存储库; 而且我不想做任何太激烈的事情,或者我可能会强迫我以后不能强制执行的任何事情.
所以我的问题是(是),我本来应该备份(哦,新手警报),还是我解压缩.pack文件时发生的事情?并且是"罪魁祸首"我实际上是复制一个干净的文件,即没有损坏?
(我认为只是告诉你我最初被"git"和"fsck"之间的Torvalds文件中的简单冲突所困惑.所以我真的很新.)
$ git status
fatal: object 016660b7605cfc2da85f631bbe809f7cb7962608 is corrupted
Run Code Online (Sandbox Code Playgroud)
$ git status
fatal: bad object HEAD
$ git fsck --full
error: HEAD: invalid sha1 pointer 016660b7605cfc2da85f631bbe809f7cb7962608
error: refs/heads/RPG does not point to a valid object!
dangling tree 2c1033501b82e301d47dbf53ba0a199003af25a8 …Run Code Online (Sandbox Code Playgroud) 我们正在使用Gerrit作为我们的Git存储库.在一个活跃了几个月的项目中,我们突然无法推动任何变化.当我们执行时,git push我们看到以下错误:
error: unpack failed: error Missing tree 14d62f0ed4385e3f68f226ac133fa9932a9c65c9
执行git fsck --full收益率:
dangling tree 2701c92fb6eab1826482f6bcc9598413e651a92a
dangling blob c505b3b12cfacd1e26dec8dc559820a30fc20c27
dangling blob 8907f94b5b4ec881e1b86d50681795e368c167ff
dangling blob 4938d9fc34c6e2f92c68872bfec6e070b2b3a9c2
dangling blob 8a5c8b8d35484ea1470e2d8e6c482fcb97b23d0f
dangling commit 3072d3314e20bf6c6998e1c02986d83019d3e1df
dangling tree 5377d7f7111d340854c3ee0946667c202227e603
dangling tree c3783e9ab540457924ceb9f9fb5ea1c2b97472b1
dangling blob 8b92d1765038e4ec5e721f98a2aabb305a7f9819
dangling tree 38a03153f0f18ca15846e9bd4983a86800a43a94
dangling commit 8db2d6ae5364174bebe13720a359ddb2e62d4c9d
Run Code Online (Sandbox Code Playgroud)
我们所有的开发人员在尝试推送时都遇到了同样的错误.到目前为止,我们已经尝试重新初始化gerrit repo(git init --bare ...)并推进它.我们还尝试使用单独的回购创建一个新的gerrit项目.最后,我们不断得到同样的错误.
有没有人对原因是什么或如何恢复有任何见解?
有没有办法在另一个分支上跳过特定(冲突)提交的同时将分支重新绑定到另一个分支?
例如,我要重订mybranch到master,但主包含提交,将与主的提交冲突,所以我更愿意撤消完全提交.
-o-o-o-o-o-x-o-o-o-o master
|
o-o-o-o mybranch
Run Code Online (Sandbox Code Playgroud)
x标记冲突的提交.
我在将本地文件夹推送到GitHub上的远程存储库时遇到问题.
我推后它达到96%左右然后显示这个..
Counting objects: 4145, done.
Delta compression using up to 2 threads.
Connection to github.com closed by remote host.
fatal: The remote end hung up unexpectedly
Compressing objects: 98% (3919/3969)
Run Code Online (Sandbox Code Playgroud)
然后在最后2%完成后显示此错误...
Compressing objects: 100% (3963/3963), done.
error: pack-objects died of signal 13
error: failed to push some refs to 'git@github.com:example/example.git'
Run Code Online (Sandbox Code Playgroud)
不确定这意味着什么.
使用OS X终端,
如何以纯文本格式查看这些文件的内容?
我遇到了一些关于20次提交的线路结束问题,并且发生了一些奇怪的事情.现在git fsck显示:
Checking object directories 100% (256/256), done.
error in tree ee2060e71cb36d33be5ddc1fe9ca8d7dd0ab35cd: contains duplicate file entries
Checking objects: 100% (8633/8633), done.
Run Code Online (Sandbox Code Playgroud)
和git show ee2060显示:
File1.cs
File2.cs
File2.cs
File2.cs
File3.cs
Run Code Online (Sandbox Code Playgroud)
这阻止我推到我的遥控器.git push显示:
error: unpack failed: index-pack abnormal exit
To https://github.com/username/Project.git
! [remote rejected] master -> master (n/a (unpacker error))
error: failed to push some refs to 'https://github.com/username/Project.git'
Run Code Online (Sandbox Code Playgroud)
我尝试过重新包装和垃圾收集.我该如何解决这个问题?
我们有一个很大的git存储库,我想将其推送到一个自托管的gitlab实例。
问题是gitlab遥控器不允许我推送我的仓库:
git push --mirror https://mygitlab/xy/myrepo.git
Run Code Online (Sandbox Code Playgroud)
这会给我这个错误:
Enumerating objects: 1383567, done.
Counting objects: 100% (1383567/1383567), done.
Delta compression using up to 8 threads
Compressing objects: 100% (207614/207614), done.
remote: error: object c05ac7f76dcd3e8fb3b7faf7aab9b7a855647867:
duplicateEntries: contains duplicate file entries
remote: fatal: fsck error in packed object
Run Code Online (Sandbox Code Playgroud)
所以我做了一个git fsck:
error in tree c05ac7f76dcd3e8fb3b7faf7aab9b7a855647867: duplicateEntries: contains duplicate file entries
error in tree 0d7286cedf43c65e1ce9f69b74baaf0ca2b73e2b: duplicateEntries: contains duplicate file entries
error in tree 7f14e6474400417d11dfd5eba89b8370c67aad3a: duplicateEntries: contains duplicate file entries
Run Code Online (Sandbox Code Playgroud)
我要做的下一件事是检查git ls-tree c05ac7f76dcd3e8fb3b7faf7aab9b7a855647867:
100644 blob …Run Code Online (Sandbox Code Playgroud) 我的Mac上有一个由Xcode管理的本地git存储库.我最近创建了一个新分支,并从那时起进行了很多更改.我正要执行我对这个新分支的第一次提交,并出现了一个错误对话框:
工作副本"app name"无法提交文件.
错误:无效对象100644
888688965 ... for"Supporting Files/animage.png"
错误:构建树时出错
我搜索了Interwebs的解决方案,发现这个问题似乎是同一个问题.我尝试了这个问题的两个答案,但都没有为我解决问题.我已经做了我能想到的所有事情来解决问题,但没有成功.
git reset --hard,这删除了未提交的更改,但在这样做后,我无法进行简单的更改.显示完全相同的错误消息.工作副本"app name"无法提交文件.
致命的:无法读取树781d ...
跑完后,git fsck --full我看到树上有几个破碎的链接,很多悬垂的斑点,几个丢失的斑点和两棵失踪的树木.
的结果git for-each-ref --format='%(refname)' | while read ref; do git rev-list --objects $ref >/dev/null || echo "in $ref"; done:
致命:错过blob对象"8886889658056c4ce52d46a485933c8df7a4de84"
参考文献/头/ UniversalStoryboard
缺少blob对象"8886889658056c4ce52d46a485933c8df7a4de84":致命
参考文献/头/ UPDATE1
缺少blob对象"8886889658056c4ce52d46a485933c8df7a4de84":致命
参考文献/头/ IOS的8更新
致命:
在refs/heads/master中丢失了blob对象'8886889658056c4ce52d46a485933c8df7a4de84'
尝试克隆回购后,这是记录的内容:
错误:无法读取appname/Images.xcassets/AppIcon.appiconset/Icon-Small-1.png(86672e7aa0d5ad36563feef30c15a5d31f921802)的
sha1文件错误:无法读取appname的sha1文件/Images.xcassets/AppIcon.appiconset/Icon-Small.png(86672e7aa0d5ad36563feef30c15a5d31f921802)
错误:无法读取appname/Image.xcassets/LaunchImage.launchimage/DefaultPortrait@2x.png(7d97eba35cf392ddb1a705109b721fcd6a20ea29)的
sha1文件错误:无法读取sha1文件appname/appname-Prefix.pch(82a2bb45076d290ce7461b28d5a579e649777779)
致命:无法结帐工作树
警告:克隆成功,但结帐失败.
在这个时候,我愿意做任何事情来防止不得不废弃整个git存储库并重新开始.我不想失去我的分支和历史.我该如何解决这个问题?我有一个项目目录的工作副本,就像我第一次发现错误以及此项目的整个历史记录的Time Machine备份时一样.你能提出的任何建议都表示赞赏.
我在我的存储库中有两个要删除的图像:1."Côted'Ivoire.png"2."Sao_Tomé_and_Príncipe.png"
如果我在Mac上从Finder中删除它们,git要我删除该文件两次:
deleted: "src/assets/demo/img/flags/Co\314\202te_d'Ivoire.png"
deleted: "src/assets/demo/img/flags/C\303\264te_d'Ivoire.png"
deleted: "src/assets/demo/img/flags/Sao_Tome\314\201_and_Pri\314\201ncipe.png"
deleted: "src/assets/demo/img/flags/Sao_Tom\303\251_and_Pr\303\255ncipe.png"
Run Code Online (Sandbox Code Playgroud)
我试图将所有更改添加到暂存和提交但是当我尝试将更改推送到远程仓库时遇到了问题.
The tree object <id> was rejected: The tree contains duplicate or improperly sorted entries.
如果我尝试重命名文件同样的事情发生.它尝试两次删除这两个文件,然后使用新名称添加新文件.
我只是想不通如何删除它们.
编辑: 删除提到的文件后,我做了一些其他的提交.我按照树中提到的步骤包含重复的文件条目,并发现图片是问题.
然后我尝试将我的分支重置为我的远程分支,应用所有其他提交,再次删除提到的文件,提交,推送.这次它工作正常,即使它实际上删除了每个文件两次.
注意:我没有此存储库的任何先腐败克隆.我相信我的情况与此处描述的不同,因为我错过了一棵树,而不是一块树.
发生了什么:
当我尝试通过LAN克隆存储库(通过SSH)时,Git返回错误,说明存储库已损坏:
remote: error: object file ./objects/2e/223ce259e9e33998d434acc778bc64b393d5d4 is empty
remote: fatal: loose object 2e223ce259e9e33998d434acc778bc64b393d5d4 (stored in ./objects/2e/223ce259e9e33998d434acc778bc64b393d5d4) is corrupt
error: git upload-pack: git-pack-objects died with error.
fatal: git upload-pack: aborting due to possible repository corruption on the remote side.
remote: aborting due to possible repository corruption on the remote side.
Run Code Online (Sandbox Code Playgroud)
我找到了git fsck可用于诊断腐败的地方,但它并没有告诉我任何新的东西:
git fsck --full
error: object file ./objects/2e/223ce259e9e33998d434acc778bc64b393d5d4 is empty
fatal: loose object 2e223ce259e9e33998d434acc778bc64b393d5d4 (stored in ./objects/2e/223ce259e9e33998d434acc778bc64b393d5d4) is corrupt
Run Code Online (Sandbox Code Playgroud)
我已经尝试在本地克隆存储库(使用--no-hardlinks)以查看发生了什么,但我得到了完全相同的结果.
然后我偶然发现了这个问题,回答的人刚刚删除了空文件(步骤3),所以我做了这个(即我已经223ce259e9e33998d434acc778bc64b393d5d4 …
git ×11
macos ×2
recovery ×2
corruption ×1
duplicates ×1
gerrit ×1
git-rebase ×1
github ×1
gitlab ×1
rebase ×1
terminal ×1
unicode ×1
unpack ×1