Git: «Objet lâche corrompu»


329

Chaque fois que je tire de ma télécommande, j'obtiens l'erreur suivante sur la compression. Lorsque j'exécute la compression manuelle, j'obtiens la même chose:

$ git gc
error: Could not read 3813783126d41a3200b35b6681357c213352ab31
fatal: bad tree object 3813783126d41a3200b35b6681357c213352ab31
error: failed to run repack

Quelqu'un sait-il quoi faire à ce sujet?

De cat-file j'obtiens ceci:

$ git cat-file -t 3813783126d41a3200b35b6681357c213352ab31
error: unable to find 3813783126d41a3200b35b6681357c213352ab31
fatal: git cat-file 3813783126d41a3200b35b6681357c213352ab31: bad file

Et de git fsck je reçois ceci (je ne sais pas si c'est réellement lié):

$ git fsck
error: inflate: data stream error (invalid distance too far back)
error: corrupt loose object '45ba4ceb93bc812ef20a6630bb27e9e0b33a012a'
fatal: loose object 45ba4ceb93bc812ef20a6630bb27e9e0b33a012a (stored in .git/objects/45/ba4ceb93bc812ef20a6630bb27e9e0b33a012a) is corrupted

Quelqu'un peut-il m'aider à déchiffrer cela?


Avez-vous essayé de regarder ce dernier objet (45ba4ceb93bc812ef20a6630bb27e9e0b33a012a)?
Gintautas Miliauskas

4
Merci ... mais comment "regarder" un objet? Encore nouveau à git :)
asgerhallas

2
«Git show» ne me donne rien de plus que «git fsck» l’a déjà fait malheureusement.
asgerhallas

4
Linus Torvalds a écrit le document utile suivant sur cette erreur et comment reconstruire manuellement les blobs si vous avez les fichiers: Comment récupérer un objet blob corrompu Quelques astuces pour reconstruire des objets blob afin de réparer un référentiel corrompu
Uwe Kleine-König

2
Pouvez-vous ajouter des commentaires ou modifier la réponse acceptée? Je suis exactement dans la même situation, et la réponse acceptée ne semble pas contenir suffisamment de détails pour "Just Work TM", mais va plutôt me forcer à plonger dans les détails moi-même.
ripper234

Réponses:


57

On dirait que vous avez un objet d'arbre corrompu. Vous devrez obtenir cet objet de quelqu'un d'autre. Espérons qu'ils auront une version non corrompue.

Vous pouvez réellement le reconstruire si vous ne pouvez pas trouver une version valide de quelqu'un d'autre en devinant quels fichiers doivent y être. Vous voudrez peut-être voir si les dates et heures des objets correspondent. Ce pourraient être les blobs associés. Vous pouvez déduire la structure de l'objet arborescence de ces objets.

Jetez un œil aux screencasts Git de Scott Chacon concernant les internes git. Cela vous montrera comment git fonctionne sous le capot et comment faire ce travail de détective si vous êtes vraiment coincé et que vous ne pouvez pas obtenir cet objet de quelqu'un d'autre.


2
il peut être stocké dans un fichier pack. C'est ainsi que git compresse le stockage des objets en stockant des deltas. Les objets en vrac sont ceux qui ne sont pas encore dans un package. Google pour les fichiers pack, indexez les fichiers dans git et vous devriez pouvoir plonger aussi profondément que vous le souhaitez.
Adam Dymitruk

2
Pourriez-vous fournir un lien dans votre réponse vers les screencasts Git de Chacon?
Ehtesh Choudhury

1
git cat-file -t <SHA1>vous dira le type. S'il n'est pas corrompu, vous pouvez alors le faire git cat-file <type> <SHA1>pour voir le contenu (je l'ai utilisé pour un blob, je suppose qu'il vous montrera également le contenu d'autres types.)
Carl G

1
De plus ce poste de Linus décrit le processus de récupération d' un blob. Cependant, quand j'ai suivi ces instructions, j'ai git statusrépondu fatal: unable to read <SHA1>même si j'avais couru avec succès git hash-object -w <file>(probablement parce que, selon ses instructions, j'avais déplacé ce fichier objet. Le renvoyer m'a juste donné la même corrupt loose objecterreur.)
Carl G

2
Et maintenant, répétez en anglais s'il vous plaît
Mehdi

359

J'ai eu le même problème (je ne sais pas pourquoi).

Ce correctif nécessite l'accès à une copie distante non corrompue du référentiel et gardera intacte votre copie de travail locale.

Mais il présente certains inconvénients:

  • Vous perdrez le record de tous les commits qui n'ont pas été poussés et devrez les réengager.
  • Vous perdrez toutes les cachettes.

Le correctif

Exécutez ces commandes à partir du répertoire parent au-dessus de votre référentiel (remplacez 'foo' par le nom de votre dossier de projet):

  1. Créez une sauvegarde du répertoire corrompu:
    cp -R foo foo-backup
  2. Faites un nouveau clone du référentiel distant dans un nouveau répertoire:
    git clone git@www.mydomain.de:foo foo-newclone
  3. Supprimez le sous-répertoire .git corrompu:
    rm -rf foo/.git
  4. Déplacez le sous-répertoire .git nouvellement cloné dans foo:
    mv foo-newclone/.git foo
  5. Supprimez le reste du nouveau clone temporaire:
    rm -rf foo-newclone

Sous Windows, vous devrez utiliser:

  • copy au lieu de cp -R
  • rmdir /S au lieu de rm -rf
  • move au lieu de mv

Foo a maintenant son .gitsous-répertoire d'origine, mais toutes les modifications locales sont toujours là. git status, commit, pull, push, Etc. travailler à nouveau comme ils le devraient.


11
Cette méthode a fonctionné pour moi. Cependant, je crois que tous les commits non poussés ont été perdus. Les données de mise en pension n'ont pas été modifiées.
wonton

30
Oui, les informations de validation non poussées seront perdues. Mais dans les scénarios courants (pas de plusieurs branches locales avec des changements non poussés dans d'autres que le courant), toutes les modifications de fichiers les plus récentes (suppressions d'encre) sont toujours sur le disque, ainsi, on peut facilement répéter toutes les validations non poussées précédentes. Comme je pousse toujours après n'importe quelle séquence de commits, je n'ai même pas rencontré ce problème.
laitue cubique

7
Simple et direct. C'est, IMO, la solution la plus efficace si vous ne comprenez pas tout sur git et que vous ne voulez pas jouer avec votre référentiel.
Oliboy50

4
Je pense que cela supprimerait tous les stashes car ils sont stockés dans le sous-répertoire .git.
Anthony Elliott

4
Dans le cas où il y a des sous-modules dans le projet, il est nécessaire de les initier avant de récupérer le .gitdossier.
AdrieanKhisbe

243

Votre meilleur pari est probablement de simplement re-cloner à partir du référentiel distant (par exemple. Github ou autre). Malheureusement, vous perdrez toutes les validations non poussées et les modifications cachées, mais votre copie de travail doit rester intacte.

Faites d'abord une copie de sauvegarde de vos fichiers locaux. Ensuite, faites-le depuis la racine de votre arbre de travail:

rm -fr .git
git init
git remote add origin [your-git-remote-url]
git fetch
git reset --mixed origin/master
git branch --set-upstream-to=origin/master master  

Validez ensuite tous les fichiers modifiés si nécessaire.


12
À mon humble avis, cela devrait être la réponse acceptée. Beaucoup plus facile que de supprimer le repo et de re-cloner! :) Bien que vous perdiez tous les commits par étapes ...
Nick

6
Évidemment, si vous étiez dans une branche autre que master lorsque la corruption s'est produite, remplacez-la masterpar le nom de votre branche.
Timothy Zorn

Surtout fonctionnait tel workingquel , mais j'étais sur une autre branche quand il s'est corrompu et ces étapes ne m'ont pas donné de copie locale d'une branche autre que master (et oui j'avais essayé de remplacer master ci-dessus workingmais cela n'a pas fonctionné). J'ai fini par faire les étapes ci-dessus master, puis j'ai caché mes modifications et j'ai fait checkout -b working origin/workinget sauté la cachette là-bas. Semble avoir fonctionné - merci!
Fantabolous

1
Mon référentiel avait un sous-module qui n'était pas corrompu. Ce processus a laissé le référentiel et son sous-module dans un état où des commandes telles que git statuscédaient fatal: Not a git repository: submodules/my-sub/../../.git/modules/my-sub. La suppression du sous-module du système de fichiers et le redémarrage du processus ont rétabli la normalité. S'assurer d'abord qu'il n'y a pas de changements non poussés dans les sous-modules est une bonne idée ...
Steven Baldasty

5
Je l'ai fait aujourd'hui et je n'ai pas perdu les modifications non validées des fichiers :) (git 2.17.1)
Fábio Dias

173

Travailler sur une machine virtuelle, dans mon ordinateur portable, la batterie est morte, a obtenu cette erreur;

erreur: fichier objet .git / objets / ce / theRef est vide erreur: fichier objet .git / objets / ce / theRef est vide fatal: objet lâche theRef (stocké dans .git / objects / ce / theRef) est corrompu

J'ai réussi à faire fonctionner le repo avec seulement 2 commandes et sans perdre mon travail (fichiers modifiés / changements non validés)

find .git/objects/ -size 0 -exec rm -f {} \;
git fetch origin

Après cela, j'ai exécuté un git status, le repo allait bien et il y avait mes changements (en attente d'être engagé, faites-le maintenant ..).

git version 1.9.1

N'oubliez pas de sauvegarder toutes les modifications dont vous vous souvenez, juste au cas où cette solution ne fonctionne pas et qu'une approche plus radicale est nécessaire.


10
find .git/objects/ -size 0 -exec rm -f {} \;travaille pour moi;)
Lazaro Fernandes Lima Suleiman

A eu le même problème, a exécuté la commande, a parfaitement fonctionné pour moi sur Mint VM.
Ludvig Rydahl

Fonctionne également parfaitement sans avoir à faire autre chose.
Halsafar

1
Pas sur une machine virtuelle et cela a fonctionné plusieurs fois pour moi. IDK pourquoi cela continue de se produire dans mon projet actuel, mais cela le corrige à chaque fois.
James L.

7
Vous devrez peut-être exécuter git symbolic-ref HEAD refs/heads/master.après la suppression des objets vides.
Stephan

43

Mon ordinateur est tombé en panne pendant que j'écrivais un message de validation. Après le redémarrage, l'arborescence de travail était telle que je l'avais quittée et j'ai pu valider mes modifications avec succès.

Cependant, quand j'ai essayé de courir, git statusj'ai

error: object file .git/objects/xx/12345 is empty
fatal: loose object xx12345 (stored in .git/objects/xx/12345 is corrupt

Contrairement à la plupart des autres réponses, je n'essayais pas de récupérer des données . J'avais juste besoin que Git arrête de se plaindre du fichier objet vide.

Aperçu

Le "fichier objet" est la représentation hachée de git d'un vrai fichier qui vous tient à cœur. Git pense qu'il devrait y avoir une version hachée de some/file.whateverstocké dans .git/object/xx/12345, et corriger l'erreur s'est avéré être principalement une question de déterminer le fichier que "l'objet lâche" était censé représenter.

Détails

Les options possibles semblaient être

  1. Supprimer le fichier vide
  2. Mettez le fichier dans un état acceptable par Git

Approche 1: supprimer le fichier objet

La première chose que j'ai essayée était simplement de déplacer le fichier objet

mv .git/objects/xx/12345 ..

Cela n'a pas fonctionné - git a commencé à se plaindre d'un lien cassé. En approche 2.

Approche 2: corriger le fichier

Linus Torvalds a une excellente description de la façon de récupérer un fichier objet qui a résolu le problème pour moi. Les étapes clés sont résumées ici.

$> # Find out which file the blob object refers to
$> git fsck
broken link from    tree 2d9263c6d23595e7cb2a21e5ebbb53655278dff8
           to    blob xx12345
missing blob xx12345

$> git ls-tree 2d926
...
10064 blob xx12345  your_file.whatever

Cela vous indique de quel fichier l'objet vide est censé être un hachage. Vous pouvez maintenant le réparer.

$> git hash-object -w path/to/your_file.whatever

Après avoir fait cela, j'ai vérifié .git/objects/xx/12345qu'il n'était plus vide et git a cessé de se plaindre.


J'étais dans une situation où je n'avais pas de télécommande ou de sauvegarde de mon dépôt, et où l'objet corrompu a été ajouté près de la validation initiale, corrompant probablement l'arborescence entière de toute façon. J'avais ma propre façon d'essayer de recréer l'objet dans un repo différent, mais cette réponse permet d'obtenir le même résultat avec plus de finesse.
Estecka

13

Essayer

git stash

Cela a fonctionné pour moi. Il cache tout ce que vous n'avez pas commis et qui a contourné le problème.


Bizarre!?! Je suis tombé sur cette erreur ce matin. S'était engagé hier, donc aucun changement non engagé. A fait ce qui suit: git stash ... fatal: impossible de créer ' touch .git/a / home / <user> /.git/index.lock': erreur d'entrée / sortie tactile: ne peut pas toucher '.git / a': erreur d'entrée / sortie sudo touch /home/guest/.git/a NON ERREUR git stash Non modifications locales à enregistrer git status ... rien à valider, répertoire de travail propre
go2null

1
@ go2null Je suis un peu en retard à ce sujet, mais les erreurs d'entrée / sortie signifient généralement des problèmes de disque dur. Même si je suis sûr que vous avez compris cela maintenant.
arleslie

"Impossible de sauvegarder l'état d'index actuel"
Vladimir Brasil

9

Une récupération de place a résolu mon problème:

git gc --aggressive --prune=now

Prend un certain temps, mais chaque objet lâche et / ou index corrompu a été corrigé.


C'est une bonne solution. A travaillé pour moi. Arrêt accidentel de mon système. Cependant, cette seule commande m'a sauvé du clonage et de toutes ces tâches lourdes. Merci Jago.
Mukesh Kumar

"échoué à exécuter reflog"
Vladimir Brasil

5

exécutant simplement un git pruneproblème résolu pour moi


Cela a fonctionné pour moi et semble être la solution la plus simple. Je ne sais pas pourquoi cette réponse n'a pas obtenu plus de votes. Le seul inconvénient est que le suivant git pullprend un peu plus de temps que d'habitude, je suppose parce qu'il remplace certains objets supprimés ou quelque chose.
steev

1
La raison pourrait être que git prune ne résout pas du tout le problème.
user3072843

4

Je viens de vivre cela - ma machine s'est écrasée lors de l'écriture dans le référentiel Git, et elle est devenue corrompue. Je l'ai corrigé comme suit.

J'ai commencé par regarder combien de commits je n'avais pas poussés vers le référentiel distant, ainsi:

gitk &

Si vous n'utilisez pas cet outil, il est très pratique - disponible sur tous les systèmes d'exploitation à ma connaissance. Cela a indiqué que ma télécommande manquait deux commits. J'ai donc cliqué sur l'étiquette indiquant la dernière validation à distance (généralement ce sera /remotes/origin/master) pour obtenir le hachage (le hachage fait 40 caractères, mais pour plus de concision, j'utilise 10 ici - cela fonctionne généralement de toute façon).

C'est ici:

14c0fcc9b3

Je clique ensuite sur le commit suivant (c'est-à-dire le premier que la télécommande n'a pas) et j'y trouve le hachage:

04d44c3298

J'utilise ensuite les deux pour créer un patch pour ce commit:

git diff 14c0fcc9b3 04d44c3298 > 1.patch

J'ai ensuite fait de même avec l'autre commit manquant, c'est-à-dire que j'ai utilisé le hachage du commit avant et le hash du commit lui-même:

git diff 04d44c3298 fc1d4b0df7 > 2.patch

J'ai ensuite déménagé dans un nouveau répertoire, cloné le référentiel depuis la télécommande:

git clone git@github.com:username/repo.git

J'ai ensuite déplacé les fichiers de correctifs dans le nouveau dossier, et les ai appliqués et validés avec leurs messages de validation exacts (ceux-ci peuvent être collés depuis git logou dans la gitkfenêtre):

patch -p1 < 1.patch
git commit

patch -p1 < 2.patch
git commit

Cela a restauré les choses pour moi (et notez qu'il existe probablement un moyen plus rapide de le faire pour un grand nombre de commits). Cependant, j'étais impatient de voir si l'arbre du dépôt corrompu pouvait être réparé, et la réponse est oui. Avec un référentiel réparé disponible comme ci-dessus, exécutez cette commande dans le dossier cassé:

git fsck 

Vous obtiendrez quelque chose comme ceci:

error: object file .git/objects/ca/539ed815fefdbbbfae6e8d0c0b3dbbe093390d is empty
error: unable to find ca539ed815fefdbbbfae6e8d0c0b3dbbe093390d
error: sha1 mismatch ca539ed815fefdbbbfae6e8d0c0b3dbbe093390d

Pour faire la réparation, je le ferais dans le dossier cassé:

rm .git/objects/ca/539ed815fefdbbbfae6e8d0c0b3dbbe093390d
cp ../good-repo/.git/objects/ca/539ed815fefdbbbfae6e8d0c0b3dbbe093390d .git/objects/ca/539ed815fefdbbbfae6e8d0c0b3dbbe093390d

c'est-à-dire supprimer le fichier corrompu et le remplacer par un bon. Vous devrez peut-être le faire plusieurs fois. Enfin, il y aura un point où vous pourrez exécuter fscksans erreurs. Vous aurez probablement des lignes "commit pendant" et "blob pendantes" dans le rapport, elles sont la conséquence de vos rebases et modifications dans ce dossier, et elles sont OK. Le garbage collector les supprimera en temps voulu.

Ainsi (au moins dans mon cas) un arbre corrompu ne signifie pas que les commits non poussés sont perdus.


3

J'obtenais également une erreur d'objet lâche corrompu.

./objects/x/x

Je l'ai corrigé avec succès en allant dans le répertoire de l'objet corrompu. J'ai vu que les utilisateurs affectés à cet objet n'étaient pas mon utilisateur git. Je ne sais pas comment cela s'est produit, mais j'ai exécuté un chown git:gitfichier sur ce fichier, puis cela a fonctionné à nouveau.

Cela peut être une solution potentielle aux problèmes de certains peuples, mais pas nécessairement tous.


2

J'ai eu cette erreur après que ma machine (Windows) ait décidé de se redémarrer. Heureusement, mon dépôt à distance était à jour, donc je viens de faire un nouveau git-clone ..



2

J'ai suivi bon nombre des autres étapes ici; La description de Linus sur la façon de regarder l'arbre / les objets git et de trouver ce qui manque était particulièrement utile.git-git récupère un blob corrompu

Mais à la fin, pour moi, j'avais des objets d'arbre lâches / corrompus causés par une défaillance partielle du disque, et les objets d'arbre ne sont pas si facilement récupérés / non couverts par ce document.

En fin de compte, j'ai déplacé le conflit objects/<ha>/<hash> et utilisé git unpack-objectsavec un fichier de pack à partir d'un clone raisonnablement à jour. Il a pu restaurer les objets d'arbre manquants.

Il me reste encore beaucoup de taches qui pendent, ce qui peut être un effet secondaire du déballage des éléments précédemment archivés, et abordé dans d'autres questions ici


2

En réponse à @ user1055643 manquant la dernière étape:

$ rm -fr .git
$ git init
$ git remote add origin your-git-remote-url
$ git fetch
$ git reset --hard origin/master
$ git branch --set-upstream-to=origin/master master  

--set-upstream-est un argument valide? Je ne pense pas!
Sharif Mamun

2
git branch (--set-upstream-to = <upstream> | -u <upstream>) [<branchname>]
Ertuğrul Altınboğa

Si vous supprimez .gitet copiez du projet cloné, le repo fonctionnera, mais aucune branche locale, ni stash ne sera conservé.
Vladimir Vukanac,

1

Nous venons d'avoir le cas ici. Il est arrivé que le problème était la propriété du fichier corrompu était root au lieu de notre utilisateur normal. Cela était dû à une validation effectuée sur le serveur après que quelqu'un ait effectué un "sudo su -".

Tout d'abord, identifiez votre fichier corrompu avec:

$> git fsck --full

Vous devriez recevoir une réponse comme celle-ci:

fatal: loose object 11b25a9d10b4144711bf616590e171a76a35c1f9 (stored in .git/objects/11/b25a9d10b4144711bf616590e171a76a35c1f9) is corrupt

Allez dans le dossier où se trouve le fichier corrompu et faites:

$> ls -la

Vérifiez la propriété du fichier corrompu. Si c'est différent, retournez à la racine de votre repo et faites un:

$> sudo chown -R YOURCORRECTUSER:www-data .git/

J'espère que ça aide!


1

Pour moi, cela s'est produit en raison d'une panne de courant lors d'un git push.

Les messages ressemblaient à ceci:

$ git status
error: object file .git/objects/c2/38824eb3fb602edc2c49fccb535f9e53951c74 is empty
error: object file .git/objects/c2/38824eb3fb602edc2c49fccb535f9e53951c74 is empty
fatal: loose object c238824eb3fb602edc2c49fccb535f9e53951c74 (stored in .git/objects/c2/38824eb3fb602edc2c49fccb535f9e53951c74) is corrupt

J'ai essayé des choses comme ça git fsckmais ça n'a pas aidé. Étant donné que le crash s'est produit pendant un git push, il s'est manifestement produit lors de la réécriture côté client qui se produit après la mise à jour du serveur. J'ai regardé autour de moi et j'ai pensé que c2388dans mon cas, c'était un objet commit, car il était mentionné par des entrées dans .git/refs. Je savais donc que je pourrais trouverc2388 quand je regarde l'histoire (via une interface Web ou un deuxième clone).

Sur le deuxième clone, j'ai fait un git log -n 2 c2388pour identifier le prédécesseur de c2388. Ensuite, j'ai modifié manuellement .git/refs/heads/masteret .git/refs/remotes/origin/masterêtre le prédécesseur de c2388au lieu de c2388. Ensuite, je pourrais faire un git fetch. L' git fetchéchec à plusieurs reprises pour des conflits sur des objets vides. J'ai retiré chacun de ces objets vides jusqu'à ce qu'il git fetchréussisse. Cela a guéri le référentiel.


1

J'ai résolu ce problème: j'ai décidé de simplement copier le fichier objet non corrompu du clone de la sauvegarde vers mon référentiel d'origine. Cela a tout aussi bien fonctionné. (Au fait: si vous ne pouvez pas trouver l'objet dans .git / objects / par son nom, il a probablement été [emballé] [pack] pour économiser de l'espace.)


0

J'ai eu ce même problème dans mon dépôt git distant à distance. Après de nombreux dépannages, j'ai compris qu'un de mes collègues avait fait un commit dans lequel certains fichiers en .git / objets avaient des autorisations de 440 (r - r -----) au lieu de 444 (r - r - r -). Après avoir demandé au collègue de modifier les autorisations avec des "objets chmod 444 -R" à l'intérieur du dépôt nu git, le problème a été résolu.


0

J'ai juste eu un problème comme ça. Mon problème particulier a été causé par un plantage du système qui a corrompu le commit le plus récent (et donc aussi la branche master). Je n'avais pas poussé et je voulais refaire ce commit. Dans mon cas particulier, j'ai pu le gérer comme ceci:

  1. Faites une sauvegarde de .git/:rsync -a .git/ git-bak/
  2. Vérifiez .git/logs/HEADet recherchez la dernière ligne avec un ID de validation valide. Pour moi, c'était le deuxième engagement le plus récent. C'était bien, car j'avais toujours les versions du répertoire de travail du fichier, et donc toutes les versions que je voulais.
  3. Créez une branche à ce commit: git branch temp <commit-id>
  4. refaites le commit cassé avec les fichiers dans le répertoire de travail.
  5. git reset master temp pour déplacer la branche principale vers le nouveau commit que vous avez fait à l'étape 2.
  6. git checkout masteret vérifiez qu'il semble bien avec git log.
  7. git branch -d temp.
  8. git fsck --full, et il devrait maintenant être sûr de supprimer tous les objets corrompus trouvés par fsck.
  9. Si tout semble bon, essayez de pousser. Si cela fonctionne,

Cela a fonctionné pour moi. Je soupçonne que c'est un scénario raisonnablement courant, car le commit le plus récent est le plus susceptible d'être corrompu, mais si vous en perdez un autre en arrière, vous pouvez probablement toujours utiliser une méthode comme celle-ci, avec une utilisation prudente de git cherrypick, et le reflog dans .git/logs/HEAD.


0

Lorsque j'ai eu ce problème, j'ai sauvegardé mes modifications récentes (car je savais ce que j'avais changé), puis j'ai supprimé le fichier dont il se plaignait dans .git / location. Ensuite, j'ai fait un git pull. Attention cependant, cela pourrait ne pas fonctionner pour vous.


0

J'ai rencontré cela une fois que mon système s'est écrasé. Voici ce que j'ai fait:

(Veuillez noter que vos validations corrompues sont perdues, mais les modifications sont conservées. Vous devrez peut-être recréer ces validations à la fin de cette procédure)

  • Sauvegardez votre code.
  • Accédez à votre répertoire de travail et supprimez le .gitdossier.
  • Maintenant, clonez la télécommande dans un autre emplacement et copiez-y le .gitdossier.
  • Collez-le dans votre répertoire de travail.
  • Engagez-vous comme vous le vouliez.

-7

Supprimez simplement le dossier .git et ajoutez-le à nouveau. Cette solution simple a fonctionné pour moi.


3
Cela nuera à votre référentiel local ..., pourrait avoir des effets secondaires plutôt indésirables :) Veuillez modifier votre proposition et ajouter cet avertissement.
Felix

1
Si vous supprimez .gitet copiez du projet connecté, le repo fonctionnera, mais aucune branche locale, ni stash ne sera conservé. Aussi, une suggestion amicale, supprimez complètement votre réponse afin de ne plus recevoir de votes négatifs.
Vladimir Vukanac

1
whoa nelly ... parle d'utiliser un bazooka pour un travail avec des pincettes.
Tuncay Göncüoğlu
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.