2017-01-12 3 views
2

Wenn ein Problem beim Verschieben eines vorhandenen Repos an einen anderen Ursprung auftritt, an dem ein Baum beansprucht wird, sind doppelte Dateieinträge vorhanden.Fehler in der Struktur: enthält doppelte Dateieinträge

git fsck --full Checking object directories: 100% (256/256), done. error in tree 4ef325894daeb3a7eeaba4cb7b40b43844f2974c: duplicateEntries: contains duplicate file entries Checking objects: 100% (25808/25808), done.

Wenn ich laufen git show 4ef325894daeb3a7eeaba4cb7b40b43844f2974c auf dem Hash für den Baum es zwei Verzeichnisse ist zeigt.

Controllers/ 
Controllers/ 

Ich habe versucht, einen neuen Baum zu machen, die gebrochen zu ersetzen, aber das Problem weiterhin besteht nach wie vor, könnte es sein, dass ich es auf dem falschen Baum mache, aber ich bin nicht sicher, wie es zwei Bäume .

git ls-tree 4ef325894daeb3a7eeaba4cb7b40b43844f2974c 040000 tree fc9af05207cd34539b6b0fe81ce7a3f1370d4750 Controllers 040000 tree fc9af05207cd34539b6b0fe81ce7a3f1370d4750 Controllers

Example of trees

+0

Ja, Baumobjekt '4ef325894daeb3a7eeaba4cb7b40b43844f2974c' ist definitiv defekt. Was ist aber die * Frage? Git überprüft vermutlich die Entität OK ... – torek

+0

Die Frage ist, wie kann ich es beheben? und drücken Sie den Code mit dem Verlauf zu einem neuen Repo. – Ican

+1

Sie müssen mindestens einige der Commits des Repositorys in neue Commits kopieren, wobei das fehlerhafte Tree-Objekt (mit doppelten Einträgen) in ein neues Tree-Objekt (kein Duplicate-Eintrag) kopiert wird. Der neue Baum wird eine andere ID haben, die sich auf die Commits, die ihn enthalten, auswirkt, was dazu führt, dass diese Commits neue IDs haben, die durch den Rest des Verlaufs blubbern. Da ich das fehlerhafte Repository nicht habe, kann ich das nicht testen *, aber es scheint wahrscheinlich, dass ein 'git filter-branch' über das gesamte Repository funktionieren sollte. – torek

Antwort

0

Aus meiner Erfahrung benötigen Sie einen neuen Baum zu erstellen, die zerbrochenen zu ersetzen.

Entweder das oder wenn die Geschichte des Repos nicht so wichtig ist. Sie können den .git-Ordner löschen und es sollte Ihnen ermöglichen, ohne Probleme zu pushen.

Verwandte Themen