Wozu Versionsverwaltung dient
Der Ordner voller Kopien
Wahrscheinlich hast du Versionsverwaltung schon selbst erfunden. So geht es den meisten.
Meist sieht das so aus:
report.txt
report-v2.txt
report-v2-fixed.txt
report-FINAL.txt
report-FINAL-actually.txt
report-FINAL-use-this-one.txt
Niemand plant das. Es wächst mit einer vorsichtigen Entscheidung nach der anderen. Du willst etwas ändern und weißt nicht sicher, ob es dadurch besser wird. Also behältst du die alte Version für alle Fälle. Dieser Impuls ist genau richtig. Auf ihm beruht Versionsverwaltung.
Das Problem ist nicht der Impuls. Das Problem ist, dass Kopien ein schlechter Weg sind, ihm zu folgen.
Wo Kopieren an seine Grenzen stößt
Sieh dir die Liste noch einmal an und versuche, drei ganz normale Fragen zu beantworten.
Welche Datei ist die richtige? report-FINAL-use-this-one.txt behauptet es zu sein. Das tat report-FINAL.txt damals aber auch. Der Name hält fest, wie du beim Speichern darüber gedacht hast, nicht welchen Platz die Datei im Verlauf der Arbeit hat.
Was hat sich zwischen zwei Dateien geändert? Du kannst beide öffnen und langsam nebeneinander lesen, in der Hoffnung, dass dir die Unterschiede auffallen. Bei sechs Absätzen Text ist das mühsam. Bei sechshundert Zeilen Code ist es nicht realistisch.
Warum hast du diese Änderung vorgenommen? Diese Frage lässt sich meist gar nicht beantworten. Der Dateiname bietet Platz für eine Versionsnummer und eine Stimmung. Für „den zweiten Absatz entfernt, weil die Zahlen darin falsch waren“ bietet er keinen Platz.
Die dritte Frage tut am meisten weh, und zwar erst später. Deshalb lässt sie sich jetzt leicht ignorieren. In sechs Monaten wirst du in deiner eigenen Arbeit etwas Seltsames finden und dich fragen, ob es ein Fehler ist oder eine Korrektur, die du absichtlich vorgenommen hast. Die Kopien können dir das nicht sagen.
Mit einer zweiten Person wird es schlimmer
Angenommen, du schickst jemandem report-FINAL.txt und bittest darum, den mittleren Abschnitt anzusehen. Während die andere Person liest, korrigierst du einen Tippfehler am Anfang.
Du bekommst eine Datei mit ihren Verbesserungen zurück. Jetzt hast du zwei Dateien. Jede enthält Arbeit, die der anderen fehlt. Keine ist richtig.
Nun muss jemand beide von Hand zusammenführen: beide lesen und Zeile für Zeile entscheiden. Wenn du das schon einmal gemacht hast, weißt du, dass es langsam geht und dass dir dabei etwas entgangen ist.
In einem Ordner vom letzten Jahr findest du notes-v3.txt und notes-v4.txt. Was lässt sich allein anhand der Dateinamen feststellen, ohne eine der Dateien zu öffnen?
Was du eigentlich möchtest
Lass die Dateien kurz beiseite und beschreibe, was du die ganze Zeit wolltest. Du wolltest sagen können:
Speichere, wie dieses Projekt jetzt aussieht, und lass mich aufschreiben, warum. Behalte jeden dieser gespeicherten Stände. Lass mich später jeden davon ansehen, je zwei vergleichen und bei Bedarf zu jedem davon zurückkehren.
Das ist ein vernünftiger Wunsch. Ein Ordner voller Kopien erfüllt ihn nicht. Git erfüllt ihn, und im Rest dieses Kurses geht es darum, wie.
Bevor wir weitermachen, noch eine Klarstellung: Das hat nichts mit mangelnder Organisation zu tun. Das Kopienproblem ist kein Mangel an Disziplin, den ordentlichere Menschen vermeiden. Auch sorgfältige, erfahrene Menschen erzeugen solche Ordner, weil ihr bisheriges Werkzeug nichts Besseres leisten konnte. Du bekommst jetzt ein besseres Werkzeug.