zły obiekt HEAD w git

zły obiekt HEAD w git


jako tani, który korzysta z Apple iCloud (najgorszej usługi synchronizacji na świecie) jako usługi synchronizacji dla mojego Obsidian Second Brain, ostatnio często spotykałem się z tym problemem:

$ git status 
fatal: bad object HEAD
$ git log
fatal: bad object refs/heads/main

Najlepszą odpowiedzią na Stackoverflow jest Mam 10 lat i każe ci rm -rf .gitktóry ofc nie jest tym, co chcesz zrobić „dobrze”.

Musiałem to naprawić kilka razy i dopiero niedawno rozwiązałem to za pomocą ChatGPT. Zapiszę tutaj dla potomności:

$ git fetch origin



$ git pull 


$ git fsck
bad sha1 file: .git/objects/00/084ad8182051c580009e8ccc22e224d97a4823 2
bad sha1 file: .git/objects/02/8027ce244a5390478159b510bd6767d648e31f 2
bad sha1 file: .git/objects/03/8c235cd6cc3e93596b25d7fb0ab14d9a999ec7 2
bad sha1 file: .git/objects/05/72e5490252d8fd25230669000747a7032a14df 2
bad sha1 file: .git/objects/07/ecafe1981e587022b562562ce02fd0adc45beb 2
bad sha1 file: .git/objects/09/e5b5f51f4f9683155f7a81d4fad1321e4085ee 2
bad sha1 file: .git/objects/0a/47019b78b8fd69a1b1a2d96b2be442fbceaf49 2
bad sha1 file: .git/objects/0c/b9400cec84abac87519225f7e5ceca987e7f66 2
bad sha1 file: .git/objects/10/2a21b02d2f08c777bfe0066de28afe0df3290c 2
bad sha1 file: .git/objects/14/e8edad8d4898bc04c4a00ce0df268cf359df63 2
bad sha1 file: .git/objects/14/65567afb6ee576ceb3e3061ffdf9c4ccd47095 2
bad sha1 file: .git/objects/1a/ac8cf84058d474b8845fe4ff410a2a1bc5a25a 2
bad sha1 file: .git/objects/1b/5cf76bb3a880fcf70083fda0aa4d0faccb5864 2

Jeśli widzisz dużo „2”, oznacza to, że icloud cię pieprzy. rozwiązać z


find .git -type f -name '* (0-9)*' -delete

Wtedy możesz git fetch origin Ponownie.

Jeśli masz

$ git log
fatal: bad object refs/heads/main

potem biegnij

git update-ref -d refs/heads/main

$ git reset --hard origin/main 

Może to pokazać kilka złych obiektów:

remote: Enumerating objects: 3899, done.
remote: Counting objects: 100% (888/888), done.
remote: Compressing objects: 100% (364/364), done.
remote: Total 3899 (delta 554), reused 597 (delta 523), pack-reused 3011
Receiving objects: 100% (3899/3899), 1.32 MiB | 9.92 MiB/s, done.
error: corrupt loose object 'dc3711cb3ba71eefe40c8e49cc9c9fb311d29553'
fatal: loose object dc3711cb3ba71eefe40c8e49cc9c9fb311d29553 (stored in .git/objects/dc/3711cb3ba71eefe40c8e49cc9c9fb311d29553) is corrupt
fatal: fetch-pack: invalid index-pack output
fatal: Could not parse object 'origin/main'.

Zatem poprawka jest następująca:

rm -f .git/objects/dc/3711cb3ba71eefe40c8e49cc9c9fb311d29553
git fetch origin

Dzisiaj też miałem taki problem:

$ git fsck

error: corrupt loose object '25726bffc0e97532098679d0ed04095710452d29'
error: unable to unpack contents of .git/objects/25/726bffc0e97532098679d0ed04095710452d29
error: 25726bffc0e97532098679d0ed04095710452d29: object corrupt or missing: .git/objects/25/726bffc0e97532098679d0ed04095710452d29
error: corrupt loose object '5b4e2ac94c33715545674545e501a705ea20924b'
error: unable to unpack contents of .git/objects/5b/4e2ac94c33715545674545e501a705ea20924b
error: 5b4e2ac94c33715545674545e501a705ea20924b: object corrupt or missing: .git/objects/5b/4e2ac94c33715545674545e501a705ea20924b
error: corrupt loose object 'ad7ceee5b187af409cbd2219bc4b578faf425471'
error: unable to unpack contents of .git/objects/ad/7ceee5b187af409cbd2219bc4b578faf425471
error: ad7ceee5b187af409cbd2219bc4b578faf425471: object corrupt or missing: .git/objects/ad/7ceee5b187af409cbd2219bc4b578faf425471
error: corrupt loose object 'fdacf1b391398e4548fa3a9f09b0f6714881907c'
error: unable to unpack contents of .git/objects/fd/acf1b391398e4548fa3a9f09b0f6714881907c
error: fdacf1b391398e4548fa3a9f09b0f6714881907c: object corrupt or missing: .git/objects/fd/acf1b391398e4548fa3a9f09b0f6714881907c
Checking object directories: 100% (256/256), done.
Checking objects: 100% (27396/27396), done.
missing blob 60e0633917e44a958f890039cff7297f99d8e8eb
dangling commit d885e9e214a1f84ce5feb8fdcdf51a27249e689e
dangling commit a38bc134bc0ec9741e7abbfa8ee200a0c82253d6
missing blob fdacf1b391398e4548fa3a9f09b0f6714881907c
missing blob 5b4e2ac94c33715545674545e501a705ea20924b
missing blob 25726bffc0e97532098679d0ed04095710452d29
missing blob f2f68aa9deda03f256574d468395e840144d9d05
missing blob ad7ceee5b187af409cbd2219bc4b578faf425471

dostałem wiele rekomendacji z egzotycznymi opcjami, ale ostatecznie rozwiązaniem było to

git reset <last good remote commit> 
git stash 
git fetch origin 
git stash pop 
git add . && git commit -m "add back new stuff" 
git push origin main 





Source link

Postagens Similares

  • पृथ्वीवरील सर्वात सुंदर जागा

    दक्षिण आफ्रिकेत एक अशी जागा आहे जिथे एक मोठी नदी असंख्य वाहिन्यांमध्ये विभागली जाते, एक मोठी आणि अनेक लहान. हे असे करते कारण नदीच्या खोऱ्यात जवळजवळ कोणताही गाळ नाही, फक्त खडक आहे, जसे की दक्षिण आफ्रिकेच्या बऱ्याच भागांमध्ये आहे, म्हणून जेव्हा नदीला पूर येतो तेव्हा पाणी सर्वत्र पसरते आणि मऊ चिखलयुक्त पूर मैदाने असलेल्या नद्यांप्रमाणे…

  • WWDC26 — De små tingene

    OS 27 Mine favoritt Apple-oppdateringer er ikke de prangende nye funksjonene, men de stille små berøringene: irritasjoner fikset, arbeidsflyter gjort jevnere, grove kanter slipt ned og langvarige feil omarbeidet med omtanke. For meg er de det tydeligste tegnet på et selskap som bryr seg om håndverket sitt. Her er en samling fra et WWDC26-skjermbilde, organisert…

  • От какого Microsoft это Altair Basic?

    февраль 2015 г. Одно из самых ценных упражнений, которое вы можете попробовать, если хотите понять стартапы, — это взглянуть на наиболее успешные компании и объяснить, почему они не были такими отстойными, какими казались при первом запуске. Потому что практически все они поначалу казались хромыми. Не просто маленький, хромой. Это не просто первый шаг на большую…

  • 在 Go 中使用 TCP keepalive · Felix Geisendörfer

    发表: 2014 年 8 月 26 日 如果您曾经编写过一些 TCP 套接字代码,您可能会想:“如果拔掉网线或远程计算机崩溃,我的连接会发生什么情况?”。 简短的回答是:什么也没有。连接的远端将无法发送 FIN 数据包,本地操作系统也不会检测到连接丢失。因此,由您作为开发人员来解决这种情况。 在 Go 中,您可以使用多种方法来帮助解决此问题。也许第一个要考虑的是 SetReadDeadline net.Conn 接口的方法。假设您的连接预计会定期接收数据,您可以简单地将超时读取视为相当于 io.EOF 错误和 Close 连接。许多现有的 TCP 协议通过定义某种心跳机制来支持这种错误处理方式,该机制要求每个端点定期发送 PING/PONG 探测,以便检测网络问题以及服务运行状况1。此外,此类心跳还可以帮助处理寻找网络活动以确定连接健康状况的代理服务器。 因此,如果您的协议支持心跳,或者您有能力将心跳添加到自己的协议中,那么这应该是解决未插入网线场景的首选。 但是,如果您无法控制协议并且不支持心跳,会发生什么情况? 现在是时候了解 TCP keepalive 以及如何在 Go 中使用它了。 TCP keepalive 在 RFC 1122 中定义,并不是 TCP 规范本身的一部分。可以为单个连接启用它,但默认情况下必须关闭。启用它将导致网络堆栈在默认持续时间(必须不少于两个小时)后探测空闲连接的运行状况。探测数据包将不包含任何数据2,并且未能回复单个探测不能被解释为死连接,因为单个探测数据包没有可靠地传输。 Go 允许您使用以下命令启用 TCP keepalive net.TCPConn的 SetKeepAlive。在 OSX 和 Linux 上,这将导致在连接空闲 2 小时后以…

  • Фатальний щипок

    Грудень 2014 року Багато стартапів за кілька місяців до смерті проходять через такий момент, коли, хоча вони мають значну суму грошей у банку, вони також багато втрачають щомісяця, а зростання доходу або не існує, або є посереднім. Компанія має, скажімо, 6 місяців злітної смуги. Або, кажучи більш жорстоко, за 6 місяців до того, як вони…

  • «Читальный зал на колесах, переулок влюбленных и после 23:00 ночлежка»

    Суббота, 18 апреля 2026 г. Виттория Бензин, в Artnet (через Оливера Томаса): Выдающийся американский режиссер Стэнли Кубрик разглядел мельчайшие детали. Он даже видел будущее. Но больше всего он видел людей, со всеми их причудами. Фильмы Кубрика, из Доктор Стрейнджлав (1964) до Сияние (1980), служат доказательством этого, как и его самые ранние фотографии, сделанные в 1940-х…

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *