Ein Blog

30 Artikel

Version Control System (VCS) - Basiswissen, Vorgehen bzw. grundlegende Schritte (Git)

Längere inhaltsreiche Texte zu erstellen ist schwer und Bedarf oft einer Menge Konzentration. Was für Romane und Sachbücher gilt, trifft mindestens genauso auf Quelltext, also die Textdateien, die den Programmcode für Softwareanwendungen enthalten zu. Selten wird man mit dem Schreiben beginnen, es kontinuierlich ohne Unterbrechungen, Fehler oder Änderungswünsche bis zum vollendeten Werk durchführen. Insbesondere bei der Softwareentwicklung kommt es auch häufig vor, dass Dinge in einem Moment als sinnvoll erachtet werden, später (und sei es nur durch Rückmeldungen der Nutzer) nicht mehr benötigt oder angepasst werden müssen.

Wozu diese Vorgeschichte? Nun, gerade Anfänger in der Softwareentwicklung glauben häufig, dass man "nur" eine Programmiersprache richtig lernen muss und dann schreibt man eben das gewünschte Programm. Wenn die Umsetzung dann holperig verläuft, Fehler beinhaltet oder gar nicht vollendet werden kann, dann hatte man sich eben noch nicht genug Wissen angeeignet.

Diese Denkweise mag daher kommen, dass man als Nutzer immer nur "praktisch fertige" Anwendungen zu Gesicht bekommt, den Entwicklungsprozess bzw. das genaue Vorgehen und die verwendeten Hilfsmittel dahinter, aber nie kennenlernt.

Eines dieser Hilfsmittel sind Quelltext Versions Kontrollsysteme (Versions Control Systems - VCS). Sie bieten einige Mechanismen um Änderungen an Dateien (und im besonderen Textdateien) zu erfassen und in geordneter Weise effizient zu speichern.

Beim Entwickeln einer Anwendung fügt sich ein VCS relativ natürlich ein, wenn man die grundlegenden Schritte und Mechanismen einmal verinnerlicht hat.

  1. Man erstellt für das Vorhaben einen (Haupt-)Ordner auf dem eigenen Rechner ("local").

  2. Das VCS wird innerhalb dieses Ordners initialisiert, d.h. man gibt dem VCS bekannt, dass es Unterschiede ("diff"-erenzes) hier zu verwalten haben wird. Es "verwandelt" diesen Ordner in einen Lagerort ("repo"-sitory) für diese Änderungspakete.

  3. Wenn man nun Projektdateien / -ordner (innerhalb des "repository") erstellt. Kann man diese zur Verfolgung dem VCS hinzufügen ("add"-en).

  4. Das VCS vergleicht von da an alle Änderungen an diesen Dateien und kann diese Unterschiede auf Wunsch jederzeit anzeigen ("diff" und "status").

  5. Wenn man zu einem bestimmten Zeitpunkt ein Abbild der aktuellen Änderungen sichern möchte, kann man dies dem VCS mitteilen ("commit") und kann (muss) hierzu noch einen Kommentar ("-m" für message) hinterlegen.

  6. Ebenso ist es jederzeit möglich sich die bisherige Geschichte der Änderungen inkl. aller Kommentare (quasi das "log"-Buch) anzeigen zu lassen und auch zu einem bestimmten Abbild / Zeitpunkt der Änderungen zu springen.

Das klingt vielleicht immer noch wenig hilfreich, wenn man sich aber zurück an die Anfangsüberlegung begibt und die einzelnen Schritte gedanklich an einem konkreten Vorhaben durchspielt, dann merkt man schnell, was dieser Arbeitsablauf an Unterstützung bringt. Jegliche Änderung am Programmcode (einem Text) wird, wie gewünscht protokolliert und kann jederzeit wieder zurückgeholt werden. VCS sind quasi ein Sicherungsmechanismus um die eigenen Fortschritte (in Quelltext überführte Gedanken) beim Entwickeln systematisch zu erfassen und zu archivieren.

Es gibt verschiedene VCS. Git ist hierbei das weltweit bekannteste und wohl auch am meisten eingesetzte System. Die grundlegenden Befehle für den lokalen Einsatz spiegeln die oberen Schritte ziemlich genau wieder:

  1. git init - erstellt ein Repository im aktuellen Verzeichnis

  2. git add - fügt die genannte Datei zur Verfolgung hinzu

  3. git commit -m "" - sichert ein Abbild der aktuellen verfolgten Änderungen

  4. git status - zeigt den "Zustand" des Repository an

Mit "git rm " gibt es noch die Möglichkeit eine Datei wieder aus der Änderungsverfolgung heraus zu nehmen. Die Änderungen würden dann beim nächsten "commit" nicht dabei. Über eine ".gitignore" Datei (eine Textdatei mit genau diesem Namen, inkl. vorangestellten ".") kann man noch Datei Zeile für Zeile auflisten, die dauerhaft von der Änderungsverfolgung ausgeschlossen werden sollen.

mathiasmell 21. Februar 2019 09:57 git , vcs

0 Kommentare

  • Bisher noch keine Kommentare zum Beitrag. Sei der Erste!