Local History vs. Git: Wann welches Werkzeug in PhpStorm rettet
AI generated
IDE
{ }
PhpStorm · Git · Recovery
Local History vs. Git
Wann welches Werkzeug im Ernstfall rettet

Local History speichert in PhpStorm lückenlos jede gespeicherte Änderung, ganz ohne Commit. Git dagegen speichert nur, was bewusst committet wurde, dafür teamfähig und dauerhaft. Wer beide Werkzeuge kennt und richtig einsetzt, verliert deutlich seltener Arbeit, egal ob durch einen fehlerhaften Refactoring-Schritt oder einen IDE-Absturz.

13 Min. Lesezeit Local History Git Recovery Undo

1. Was Local History überhaupt ist

Local History ist eine in PhpStorm eingebaute, automatische Versionierung, die bei jedem Speichern einer Datei im Hintergrund einen Snapshot anlegt, vollkommen unabhängig von Git und ohne dass ein Entwickler dafür irgendetwas tun muss. Anders als bei einem Commit ist kein bewusster Akt nötig, jede noch so kleine Änderung, jeder Tippfehler-Fix und jedes automatische Refactoring landet automatisch als eigener Eintrag in der Historie einer Datei oder eines ganzen Verzeichnisses.

Das macht Local History zu einem Sicherheitsnetz gerade für den Zustand zwischen zwei Commits, also genau den Bereich, in dem Git von Haus aus nichts speichert. Wer während eines längeren Refactorings mehrfach experimentiert, wieder verwirft und neu ansetzt, ohne jeden Zwischenschritt zu committen, verlässt sich in der Praxis fast immer auf Local History, auch wenn viele Entwickler das Werkzeug nie bewusst wahrnehmen, bis sie es zum ersten Mal dringend brauchen.

2. Wie Local History technisch funktioniert

Local History speichert ihre Snapshots in einem projektinternen, IDE-verwalteten Verzeichnis außerhalb des eigentlichen Arbeitsbaums, sodass sie weder im Git-Verlauf noch in einem Backup des Projektordners auftaucht, sofern dieses nicht auch die IDE-Konfiguration mit einschließt. Die Speicherung erfolgt inkrementell, es wird also nicht bei jedem Save eine komplette Kopie jeder Datei angelegt, sondern nur die Differenz zum vorherigen Zustand, was den Speicherbedarf trotz sehr feiner Granularität überschaubar hält.

Weil die Historie an das jeweilige Projekt auf dem jeweiligen Rechner gebunden ist, überlebt sie weder einen Rechnerwechsel noch das Löschen und erneute Klonen des Projektordners. Ein frisch aus Git ausgechecktes Projekt startet immer mit leerer Local History, ganz gleich wie viele Commits das Repository bereits enthält, was den fundamentalen Unterschied zu Git noch einmal unterstreicht: Local History ist lokal und flüchtig, Git ist verteilt und dauerhaft.

3. Die Local-History-Oberfläche in der Praxis

Der Zugriff erfolgt über einen Rechtsklick auf eine Datei, einen Ordner oder das gesamte Projekt im Projektbaum, gefolgt von Local History, Show History. PhpStorm öffnet daraufhin eine Zeitleiste mit allen gespeicherten Zwischenständen, zwischen denen sich per Diff-Ansicht wie bei einem Git-Vergleich navigieren lässt, inklusive farblich markierter Zeilen für Hinzufügungen und Löschungen.

Aus dieser Ansicht heraus lässt sich jeder frühere Stand direkt wiederherstellen, entweder die komplette Datei per Revert oder gezielt einzelne Codeblöcke per Copy-Paste aus der historischen Ansicht in die aktuelle Datei. Für ganze Ordner funktioniert das analog: Ein versehentlich gelöschtes Unterverzeichnis lässt sich über Local History auf Ordnerebene oft komplett wiederherstellen, selbst wenn keine einzige Datei davon jemals committet wurde.


Wiederherstellung ueber Local History:

1. Rechtsklick auf Datei/Ordner im Project-Baum
2. Local History -> Show History
3. Zeitpunkt vor dem Problem auswaehlen
4. Diff pruefen (links: aktuell, rechts: historisch)
5. "Revert" fuer die komplette Datei
   ODER: einzelne Zeilen aus der historischen Ansicht kopieren

Zusaetzlich: "Local History -> Put Label" VOR einem riskanten
Refactoring setzt einen benannten Wiederherstellungspunkt.

4. Szenarien, in denen Local History rettet

Der klassische Fall ist eine Datei, die versehentlich überschrieben oder gelöscht wurde, bevor sie jemals committet war, etwa nach einem übereifrigen Suchen-und-Ersetzen über mehrere Dateien hinweg, das mehr verändert hat als beabsichtigt. Weil Git per Definition nur das kennt, was im Index oder in einem Commit steht, ist ein ungecommiteter Verlust für Git unsichtbar, für Local History dagegen ein ganz normaler, jederzeit abrufbarer Zwischenstand.

Ebenso rettet Local History nach einem IDE-Absturz während einer laufenden, noch nicht gespeicherten Änderung, weil PhpStorm periodisch auch Zwischenstände ungesicherter Buffer erfasst, und nach dem Überschreiten des eigenen Undo-Limits, das bei sehr langen Editier-Sitzungen irgendwann an sein Ende kommt, während Local History deutlich weiter zurückreicht. Auch beim versehentlichen kompletten Verwurf aller Änderungen per git checkout mit doppeltem Bindestrich und Punkt, der lokale, ungecommitete Änderungen kommentarlos verwirft, bleibt Local History oft der einzige Weg zurück.

5. Wo Git klar überlegen ist

Git ist immer dann die richtige Wahl, wenn es um geteilte, dauerhafte und nachvollziehbare Historie über mehrere Entwickler und Rechner hinweg geht. Ein Commit mit aussagekräftiger Nachricht dokumentiert eine bewusste, fachlich sinnvolle Änderungseinheit, die sich per Blame einem Autor zuordnen, per Tag als Release markieren und per Pull-Request diskutieren lässt, alles Fähigkeiten, die Local History als rein lokales, unstrukturiertes Snapshot-Archiv grundsätzlich nicht bietet.

Für Branching, das gezielte Rückgängigmachen einer bestimmten fachlichen Änderung per Revert, das Zusammenführen paralleler Arbeitsstränge oder die langfristige Aufbewahrung über Jahre hinweg ist Git ohne Alternative. Ein Projekt, das ausschließlich auf Local History vertraut und nie committet, verliert seine gesamte Historie beim nächsten Rechnerwechsel, während ein Git-Repository beliebig oft geklont und dadurch effektiv beliebig oft gesichert werden kann.

6. Ein konkreter Recovery-Workflow

Ein typisches Schadensbild in einem Magento-Projekt: Ein Entwickler führt in PhpStorm ein automatisches Refactoring über mehrere Plugin-Klassen aus, bemerkt danach, dass eine wichtige, individuelle Anpassung in einer der Dateien dabei überschrieben wurde, hat aber vor dem Refactoring nicht committet. Der erste Schritt ist, ruhig zu bleiben und keine weiteren Speicheraktionen in der betroffenen Datei vorzunehmen, um die relevanten Local-History-Einträge nicht zu überschreiben.

Dann folgt der Blick in Local History, Show History für genau diese Datei, das Auffinden des Zeitpunkts kurz vor dem Refactoring anhand der Zeitstempel, und ein gezielter Diff gegen den aktuellen Stand. Häufig reicht es, nur den verlorenen Codeblock aus der historischen Ansicht zu kopieren, statt die gesamte Datei zu ersetzen, damit die zwischenzeitlich vom Refactoring korrekt vorgenommenen Änderungen erhalten bleiben.

7. Manuelle Labels vor riskanten Refactorings

Über Local History, Put Label lässt sich ein benannter Wiederherstellungspunkt setzen, der in der Zeitleiste deutlich hervorgehoben erscheint und damit leichter wiederzufinden ist als ein automatischer Snapshot zwischen hunderten anderen. Vor einem größeren, automatisierten Refactoring über viele Dateien, etwa dem Umbenennen einer zentralen Interface-Methode in einem Magento-Modul, ist ein solches Label eine günstige Versicherung, die wenige Sekunden kostet.

Das Label ersetzt keinen Commit, ist aber die schnellere Option für einen Zwischenstand, den man nicht ins Git-Repository aufnehmen möchte, etwa weil der Code noch nicht kompiliert oder erst ein halbfertiger Zwischenschritt ist. In Kombination mit einem tatsächlichen Commit direkt vor dem Refactoring bietet sich die stärkste Absicherung: Git für den offiziellen letzten sauberen Stand, das Label für den exakten Zeitpunkt kurz davor innerhalb der IDE.

8. Grenzen und Aufbewahrungsdauer

Local History bewahrt Einträge standardmäßig für einen begrenzten Zeitraum auf, konfigurierbar über Settings, Advanced Settings, Local History mit Optionen für die maximale Aufbewahrungsdauer und den maximalen Speicherplatz, wonach ältere Einträge automatisch gelöscht werden. Für ein Projekt mit sehr aktiver, langjähriger Entwicklung reicht die Standardeinstellung meist nicht aus, um Monate zurückzuschauen, weshalb Local History niemals als Ersatz für regelmäßige Commits gedacht ist, sondern als Ergänzung für den kurzfristigen Bereich.

Eine weitere Grenze: Local History ist strikt an das lokale Projektverzeichnis auf dem jeweiligen Rechner gebunden und lässt sich nicht auf einen anderen Rechner übertragen, mit einem Kollegen teilen oder in ein Backup-System außerhalb der IDE exportieren. Wer regelmäßig zwischen mehreren Maschinen wechselt, etwa Homeoffice und Büro-Rechner, kann sich auf Local History deshalb nur für den jeweils aktuell genutzten Rechner verlassen, nicht projektübergreifend.

9. Beide Werkzeuge kombiniert in der Praxis

In der täglichen Arbeit ergänzen sich beide Werkzeuge, statt in Konkurrenz zu stehen: kleine, häufige Commits für die dauerhafte, teamfähige Historie, plus Local History als engmaschiges Sicherheitsnetz für den Bereich zwischen den Commits, in dem experimentiert, verworfen und neu angesetzt wird. Ein Entwickler, der beide Werkzeuge kennt, verliert praktisch nie mehr als wenige Minuten Arbeit, selbst im schlimmsten Fall eines IDE-Absturzes mitten in einem komplexen Refactoring.

Die folgende Tabelle fasst zusammen, welches Werkzeug in welchem Szenario die richtige Wahl ist, gemessen an Reichweite, Teamfähigkeit und typischem Rettungsfall in einem PHP- oder Magento-Projekt.

Szenario Local History Git Empfehlung
Ungecommitete Datei überschrieben Rettet zuverlässig Kann nicht helfen Local History
Versehentlicher kompletter Verwurf per git checkout Rettet oft Ursache des Problems Local History
Fehlerhafter Feature-Branch vor Wochen Meist bereits gelöscht Rettet zuverlässig Git
Team-weite Nachvollziehbarkeit Nicht möglich Kernfunktion Git

Mironsoft

PhpStorm-Setup, Docker-Integration und Team-Produktivität

PhpStorm, das für Magento- und PHP-Projekte wirklich optimal läuft?

Wir prüfen bestehende PhpStorm-Setups auf langsame Indizierung, ungenutzte Docker-Integration und fehlende Team-Konventionen und richten eine Konfiguration ein, die von der ersten Sekunde an produktiv ist.

Setup-Review

Indexing, Interpreter und Speicher-Einstellungen für große Magento-Projekte optimieren.

Docker-Integration

Xdebug, PHPUnit und Datenbank-Tools sauber mit dem Docker-Setup verbinden.

Team-Konventionen

Inspection-Profile, Code-Style und Live-Templates projektweit vereinheitlichen.

10. Zusammenfassung

Local History vs. Git: Das Wichtigste auf einen Blick

Local History

Automatische, lokale Snapshots bei jedem Save, auch ohne Commit, aber flüchtig.

Git

Bewusste, dauerhafte und teamfähige Historie, aber nur für tatsächlich Committetes.

Beste Praxis

Kleine Commits plus Local History als Sicherheitsnetz zwischen den Commits.

Labels

Put Label vor riskanten Refactorings setzt einen leicht auffindbaren Wiederherstellungspunkt.

11. FAQ: Local History vs. Git: Das Wichtigste auf einen Blick

1Was ist der Unterschied zwischen Local History und Git?
Local History speichert automatisch bei jedem Save einen Snapshot, unabhängig von Commits, aber nur lokal auf dem jeweiligen Rechner. Git speichert bewusst gesetzte Commits, dafür dauerhaft, teamfähig und über Rechner hinweg verfügbar.
2Kann Local History eine nie committete Datei retten?
Ja, genau das ist der Hauptvorteil. Da Local History unabhängig von Commits jede Speicherung erfasst, lässt sich eine versehentlich überschriebene oder gelöschte, ungecommitete Datei über Local History, Show History meist wiederherstellen.
3Wie lange bleiben Local-History-Einträge erhalten?
Standardmäßig für einen begrenzten, konfigurierbaren Zeitraum, einstellbar unter Settings, Advanced Settings, Local History. Ältere Einträge werden automatisch gelöscht, weshalb Local History keinen Ersatz für regelmäßige Commits darstellt.
4Überlebt Local History einen Rechnerwechsel?
Nein. Local History ist strikt an das Projektverzeichnis auf dem jeweiligen Rechner gebunden und lässt sich nicht übertragen, teilen oder exportieren.
5Wie setze ich einen benannten Wiederherstellungspunkt vor einem Refactoring?
Über Rechtsklick auf das Projekt oder eine Datei, Local History, Put Label. Der Punkt erscheint danach farblich hervorgehoben in der Zeitleiste und ist leichter wiederzufinden als ein automatischer Snapshot.
6Was passiert bei einem versehentlichen kompletten Verwurf per git checkout?
Alle ungecommiteten Änderungen im Arbeitsverzeichnis werden kommentarlos verworfen. Da Git diese Änderungen nie gespeichert hatte, kann nur Local History sie in den meisten Fällen zurückholen.
7Sollte ich Local History anstelle von Git-Commits nutzen?
Nein. Local History ist eine Ergänzung, kein Ersatz. Für dauerhafte, teamfähige und nachvollziehbare Historie bleibt Git zwingend nötig, Local History deckt nur den kurzfristigen, lokalen Bereich ab.
8Kann ich einzelne Zeilen aus Local History wiederherstellen statt der ganzen Datei?
Ja, in der Diff-Ansicht von Local History, Show History lassen sich einzelne Codeblöcke aus dem historischen Stand kopieren, ohne die gesamte Datei per Revert zu ersetzen.
9Funktioniert Local History auch für gelöschte Ordner?
Ja, ein Rechtsklick auf das übergeordnete Verzeichnis und Local History, Show History zeigt oft auch komplett gelöschte Unterordner samt Inhalt zur Wiederherstellung an.
10Wie viel Speicherplatz belegt Local History?
Die Speicherung erfolgt inkrementell als Differenz zum vorherigen Zustand, nicht als volle Kopie jeder Datei, weshalb der Speicherbedarf trotz feiner Granularität überschaubar bleibt und über Settings begrenzbar ist.