Akansel Cengiz Logo Akansel Cengiz

An image shows many wood cubes on the floor with the text disaster.

Verfasst von Akansel Cengiz

Veröffentlicht am 9.1.2024

06 | Github - Repository

Einmal Katastrophe und wieder zurück.


5 Minuten Lesezeit

Was ist passiert?

Ende Dezember 2023 habe ich vor dem Jahreswechsel meinen letzten Commit mit dem Inhalt „Mobile Menu implementiert“ abgeschickt. Anfang letzter Woche wollte ich weiter an meiner Seite arbeiten und habe direkt beim Öffnen der Datei gesehen, dass es lückenhaft gewesen ist. Es fehlten, teile der Komponenten, Seiten, Layouts oder auch komplett wie Package.json oder tsconfig.json. Ich habe erst mal an nichts Schlimmes gedacht, weil mein Mac mit der iCloud ↗️ verbunden ist und die fehlenden Daten werden schon irgendwie wieder auftauchen, weil sie noch nicht aktualisiert worden sind. Ich habe die iCloud erst off und dann wieder online gesetzt, mit der Hoffnung, dass es aktualisiert wird, aber nichts ist passiert. Auf Github war das Repository noch in Takt. Wunderbar dachte ich mir und wollte mit git clone die Daten herunterladen und weiter daran arbeiten. Es erschien ein "unable tree error". Ich konnte weder Clone noch Fetch benutzen. Egal, was ich tat „Error Error Error“. Nichts hat funktioniert.

Mögliche Gründe, vielleicht die iCloud?

Nebenbei fühlte sich iCloud ↗️ so lahm beim Laden an (was mir vorher nie so aufgefallen ist) dass ich keine Lust mehr darauf hatte und mich nach einer Alternative umgesehen habe. Da mein Main E-Mail-Account und einige andere Sachen schon in verschiedenen Google Services lagen, kam mir der Gedanke nahe, mich dort auch mit der Cloud niederzulassen. Also auf zu Google Drive ↗️. Habe die Ordner angelegt, wo Google Drive uploaden darf und es erst mal laufen lassen, da ich auch einiges an Bildmaterial mitgebracht habe, was sich über die Jahre angesammelt hat. Aktuell 2,99 € für 200 GB. Fast identisch wie icloud. Preisabsprachen sind reiner Zufall 😂. Wieder zurück zu meinem Hauptproblem „Warum ist mein Repo so lückenhaft?“. Auf zu Google, um die verschiedenen Error Meldungen in die Suchleiste einzutippen und zu sehen, ob dieses Problem auch schon bei anderen aufgetreten ist.

": unable to read tree a203132ba17332782f2b3662c3cb5b7deda958d3"
"fatal: not a git repository (or any of the parent directories): .git"

Stack Overflow, Github Community etc.

Erste Adresse Stack Overflow ↗️. Wie immer nach dem Post mit den meisten Likes Ausschau halten und lesen, was dort geschrieben worden ist. Ist meist immer ein Indiz dafür, dass der Code funktioniert, was aber nicht heißen, soll das, die mit weniger Likes schlecht sind. Nur hier ist es halt safer das sehr viele andere den Code schon ausprobiert und es für hilfreich befunden haben. Kann ich den Code gebrauchen? Was passiert, wenn ich den Code eintippe? Zu viele Fragen im Kopf, die beim Lesen automatisch aufpoppen. So wirklich schlau und DIE Antwort auf mein Problem habe ich jetzt nicht finden können. Nächster Halt …Github Community ↗️. Ich bin dort direkt auf einen Post gestoßen, der easy-peasy aussah und mich wieder auf Spur bringen könnte. So, code eingetippt und abgeschickt: git commit -m "Initial commit" git branch -M main Schnell zu Github ↗️ um nachzusehen, ob alles ok ist. Siehe da, mein Github Repo mit der Homepage, wo ich seit knapp 2 Monaten dran arbeite, ist auf einmal komplett leer. Ich suchte wie verrückt nach einem Weg es Rückgängig (Undo) zu machen aber je länger ich suchte, umso verrückter hat es mich gemacht.

Und plötzlich habe ich ein Verzeichnis auf Github gefunden, in dem nur noch „deleted“ in Rot stand. Mein Herz rutschte mir so tief in die Hose, dass mir der Atem stockte. Zum Glück waren die gelöschten Daten noch sichtbar, sodass ich sie per Copy & Paste retten konnte. Ich wusste ja nicht, was am nächsten Tag sein würde – vielleicht wären die Daten dann komplett weg. Die folgende Nacht war wirklich schlimm. Die ganze nächste Woche habe ich mich darauf konzentriert, mein Repository, das irgendwie da war oder doch nicht da war, wiederherzustellen, damit es wieder im public Ordner erscheint.

a pic that shows a gitub commit

Eine nette Github Userin hat mir zwei Links 1. How to fix the “fatal: not a git repository” error ↗️ und 2. Undo Changes in Git: git checkout, git revert, & git reset ↗️ geschickt, wo ähnliche Probleme beschrieben werden. Beide Seiten waren super und einfach erklärt. Meinem Problem hat es leider nicht weiter helfen können. Ich kann Gott sei Dank im VSC (Visual Studio Code) den Git Graphen sehen, welche Commits schon abgeschickt worden sind. So dachte, ich lösche den „initial commit“ dann bist du wieder im „Mobile Menu implementiert“ Commit und alles ist wieder wie gehabt. Da Github nun mal Github ist und nicht Malen nach Zahlen geht die Suche mit „Wie lösche ich Commits? Oder wie mache ich den letzten Befehl wieder rückgängig?“ los.

a pic shows the shell with the git log command

Schrecken mit einem Ende

Dann bin ich auf den Befehl git reset --hard HEAD gestoßen. Ich habe diesen Befehl benutzt, um zwei überflüssige Commits rückgängig zu machen. Anstatt „HEAD” wird einfach die Commit-ID genutzt git reset --hard a0fa81. Voila ist der GitGraph Tree wieder beim „Mobile Menu implementiert“ angekommen.

a pic shows the git graph

Hier kann man es sehr schön sehen, dass der Commit „Initial Commit“ nicht mehr im Graphen zu sehen ist. Er kam direkt nach „Mobile Menu implementiert“.

Ich habe mein Repo mit Git Clone "Repo Name" herunterladen können, obwohl es komischerweise nicht im public Ordner liegt. Bekomme es auch leider nicht wieder dorthin zurück. Will jetzt auch nicht mehr weiter dran herumwurschteln da ich jetzt schon fast 2 Wochen nur durch Wiederherstellen und warum, wieso und weshalb verloren habe. Wahrscheinlich geht es easy, aber gerade aktuell möchte ich es so belassen da ich das Repo nicht nochmal verlieren möchte.

Mein Fazit

Mein Rat an dich : Bitte erspare dir unnötige Kopfschmerzen und studiere unbekannte Commits vorher immer genau, die du nicht kennst oder teste sie in einer Umgebung wo sie keinen großen Schaden anrichten können.

P.S.

Der Befehl git reflog hat mir auch sehr gute Dienste geleistet.

git reflog ist ein Git-Befehl, der das Reflog (Reference Log) eines Repositorys anzeigt. Das Reflog führt Buch über alle Änderungen, die an den Referenzen (wie HEAD) im Repository vorgenommen wurden. Es zeichnet also alle Aktionen auf, die den Zustand der Commit-Historie beeinflusst haben, einschließlich solcher, die nicht mehr durch normale Branch- oder Commit-Referenzen zugänglich sind.

a pic that shows the git reflog command

Tags:

Astro

TailwindCSS

Frontend

Blog

Bootstrap

Google Lighthouse

React

HTML

CSS

JavaScript

AWS

Cloud

CloudFront

ACM

Route 53

Fonts

Fontsource

API

HTTP-Clients

JSON

RandomUser

Testimonial

Markdown

MDX

Markdoc

Blogging

Transitions

Swup

Astro Discord Server

Github

Version Control

Repository

StackOverflow

Test Automation Framework

Testing-Framework

Cypress

Sitemap

SEO