2013-11-28 25 views
20

Ho un problema con git su Windows Azure. git status mostra - "fatale: oggetto cattivo testa" e ho provato a fare funzionarelo stato di git risulta fatale: oggetto non valido HEAD

 git fsck --full 
    git gc 

fsck git mostra

broken link from commit 739df633f185ce5d1ab7eb97d619b28e7d81185a 
       to tree 2a6d4876d135c1fa7cbe1348c62570006e895fc5 
broken link from commit 9c7eae5ffed34dbfac977e515dee675626b59f93 
       to tree 400132d215ab9aced883a9971e648b82624b2032 
broken link from commit 9c7eae5ffed34dbfac977e515dee675626b59f93 
       to commit 4a49af0a0cb64a0a0415734b11772d6df18561fb 
broken link from commit bc3072f30e71c616a8196089e19a67a2c9c0a5ad 
       to tree 0aa813c183487d0a1b1f7ae81501ca7a1168283f 
broken link from commit d3bb4f8545e91ec8ace15ad31a3147d92a1d4242 
       to tree 4682108accd8e72fe68858232386dffe60f9f02d 
broken link from commit 6b34795c4b54286301bcdc0ed254a04c132cb2ad 
       to tree 5c57dd3222d11924dba841d3cae517bdc9220601 
broken link from commit d70172d855391b93bc1c5eeb9b4226df525dfc6e 
       to commit 390c8cbd527c8e707c51e25142e54421f4dd3948 
broken link from commit cc05e8d2e3733693ebb67d697ae4b65e51fea79a 
       to commit 32f081f8b901425fd1e8898478f0551970bee0f5 
broken link from tree 6a75ed6d0311d800078e77f43d427d128372d5bc 
       to blob 4a064d610c0e7207967d59934c8bc5f491f26dae 
broken link from tree 6a75ed6d0311d800078e77f43d427d128372d5bc 
       to tree 5c06ec964dcbade49287d0f36efe1f7b60f446e3 
broken link from tree b4855fa6734b5652a93a9b799eafe47fad0d13a0 
       to blob 3e1fb421613dc9066cbf9c95eddc61619a9f8eed 
broken link from tree b4855fa6734b5652a93a9b799eafe47fad0d13a0 
       to tree 556a50048d42346c283c94b78ea278ba1d57d251 
broken link from tree 289c03409370c4ca7c12266ce2822a2976bd032b 
       to blob 3abf3c48ada45f63404dcf4d675ddfdadcfa83c6 
broken link from tree 289c03409370c4ca7c12266ce2822a2976bd032b 
       to blob 3fa569892003b468ed1301426dd6d96d9644be3c 
broken link from tree 289c03409370c4ca7c12266ce2822a2976bd032b 
       to blob 0a9a54a51e84f3bc34122dbce1146d895fcbe22c 
broken link from tree 289c03409370c4ca7c12266ce2822a2976bd032b 
       to blob 3fa48873564361b4d95830803ae77f79eeafaf5b 

git spettacoli filiali - * maestro

Ogni aiuto è apprezzato!

+0

Sembra che il repository di rotta su filesystem leve l. Per ripristinare HEAD scrivi qualcosa di significativo in '.git/HEAD', come' 739df633f185ce5d1ab7eb97d619b28e7d81185a' o 'ref: refs/heads/master' (se il ramo' master' è OK). Ma è improbabile che aggiusti il ​​repository. –

+0

Non penso che HEAD stesso sia rotto, ma piuttosto la cosa alla fine punta a. – Ikke

risposta

21

Il repository è corrotto. Ciò significa che i dati vengono persi e non possono essere recuperati da Git stesso. Se si dispone di un altro clone di questo repository, è possibile recuperare gli oggetti da lì o creare un nuovo clone.

fatal: bad object HEAD significa che la diramazione a cui fa riferimento HEAD punta a un oggetto commit non valido, il che significa che è mancante o danneggiato.

Dall'uscita di git fsck, è possibile vedere che mancano alcuni oggetti albero, blob e commit.

Si noti che l'utilizzo di git non è sufficiente per mantenere i dati al sicuro. Hai ancora bisogno di eseguire il backup in caso di corruzione.

7

Ho avuto un problema simile e che cosa ha funzionato per me è stato quello di fare un nuovo clone del mio repository originale

+1

Sono finito qui dopo un crash di Windows 10 durante l'utilizzo di VS2017 (15.3.3) e git. Non avevo alcuna modifica in sospeso, quindi utilizzando la risposta di @serup sopra, in particolare I: - rimossa la cartella della soluzione root "C: \ Code \ MySolution" (che conteneva .git come sottocartella). - quindi da VSTS | Progetto = MySolution | Codice | pagina di ramo principale, ho fatto clic sul pulsante "Clona" e ho scelto "Clona in Visual Studio" - Ho inserito la stessa posizione "C: \ Code \ MySolution". Tutto molto semplice (alla fine). – Peter

3

sono riuscito a risolvere un problema simile a questo quando alcuni file di Git sono stati danneggiati:

https://stackoverflow.com/a/30871926/1737957

Nella mia risposta a questa domanda, cercare la parte in cui ho avuto lo stesso messaggio di errore come in questo caso:

fatal: bad object HEAD. 

Potresti provare a seguire quello che ho fatto da quel momento in poi. Assicurati di eseguire prima il backup dell'intera cartella.

Ovviamente, il repository potrebbe essere danneggiato in un modo completamente diverso, e quello che ho fatto non risolverà il tuo problema. Ma potrebbe darti qualche idea! Git interni sembrano magici, ma in realtà sono solo un mucchio di file che possono essere modificati, spostati, cancellati come tutti gli altri. Una volta che hai una buona idea di cosa fanno e di come si adattano, hai buone probabilità di successo.

-1

Ho risolto questo rinominando il ramo nel file .git/refs/remotes/origin/HEAD.

0

Effettuare una copia della directory git nell'host locale ed eseguire ancora una volta. Spingi il progetto in un nuovo repository.

10

provare questo: ha lavorato per me rm -rf .git

quindi copiare .git da altri clone

cp <pathofotherrepository>/.git . -r

poi fare

git init

questo dovrebbe risolvere il problema, TUTTO IL MEGLIO

+0

Stavo cercando un comando ingannevole ma, dopo tutto, questo è abbastanza veloce e pulito. –

+0

Funziona! Grazie! Ma c'è un avvertimento ... perderete tutte le cose che non sono nella vostra directory di lavoro (rami locali, scorta, ecc.). Forse vuoi usare 'mv' invece' rm -rf' per provare a recuperare qualcosa di quest'ultimo ;-) –

0

Ho risolto questo problema copiando i dati del ramo (con gli errori) nella cartella git locale del mio portatile Apple.

In qualche modo nel terminale e durante l'esecuzione: git status, indica dati più specifici in cui si verifica l'errore. Se guardi sotto gli errori, si spera che tu veda un elenco di cartelle con errori. Nel mio caso GIT ha mostrato la cartella responsabile dell'errore. Cancellando quella cartella e affidando la branche, ci sono riuscito. lo stato di git funzionava di nuovo gli altri dispositivi che si aggiornavano con git pull; tutto funziona di nuovo su ogni macchina.

Speriamo che questo funzioni anche per voi.

0

Il repository è danneggiato. Ma probabilmente si può risolvere il problema e mantenere le modifiche:

  1. Eseguire il backup prima: cp your_repository your_repositry_bak
  2. clonare il repository rotto (funziona ancora): git clone your_repository your_repository_clone
  3. Sostituire la cartella .git rotto con quello dal clone : rm -rf your_repository/.git && cp your_repository_clone/.git your_repository/ -r
  4. Elimina clone & di backup (se tutto va bene): rm -r your_repository_*
+0

Questa risposta riunisce solo i prodotti di [@ serup's] (https://stackoverflow.com/a/25607163/1870254) e [@ ganesh's answers] (https://stackoverflow.com/a/45730454/1870254). –

Problemi correlati