Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
61 lines (38 sloc) 6.45 KB

Git - verteilte Versionswaltung von Dateien

Warum das Thema Git

Git ist eine Software aus der Linux Welt, welche hauptsächlich Entwickler einsetzen. Also nicht im Zentrum meiner Aufmerksamkeit. Spätestens mit dem Kauf von GitHub.com, dem bedeutensten Onlinedienst für Git Projekte, durch Microsoft war klar das Git den digitalen Alltag erreicht hat. Analog Blockchain, Cloud, KI oder 3D Drucker. Speziell in Kombination mit der Auszeichnungssprache Markdown.
Z.B. wenn man ein Buch schreibt, enstehen die einzelnen Kapitel in verschiedenen Version. Manchmal parallel und erst an einem bestimmten Punkt entscheidet man sich für eine Version. Für einen Autor ist es auch spannend zu sehen, wie das Buchprojekt über verschiedene Schritte ("commit") den Abschluss erreichte.

Mein Projekt, welches ich als erstes über Git / Markdown abwickle ist mein Blog. Bloggen war für mich immer auch das auseinandersetzen mit einer Technologie. Mit der Blogengine.NET war es ASP.NET und XML. Git steht für mich auch symbolisch für das Elementare: Dateien. Die (elementaren) Grundlagen der Computer und Netzwerke gehen IMO mehr und mehr aus den Augen...

Ein praktisches Beispiel

Die Kommandozeile (CLI - Command Line Interface) ist immer der beste Startpunkt, um etwas von Grund auf zu verstehen. Hier verwende ich das Betriebssystem "Windows 10" und die CLI heisst "Powershell".
Das nachfolgende Beispiel habe ich selber Schritt für Schritt durchgespielt. D.h. es sollte auf anderen Windows 10 Installationen nachvollziehbar sein. Linux ("Bash") und MacOS ("Terminal") haben (IMHO) dieselben GIT Befehle.
In diesem Beispiel geht es darum, ein Textdokument zu erstellen, zu ändern und mit den Änderungen zu arbeiten. "Hilfe" zu den einzelnen Git Befehlen erhält man über den Parameter "help". Will man wissen, was der Befehl "git status" macht, ruft man diesen mit "git help status" auf. Alle Informationen zu einem Git Projekt liegen im Repository ("Repo"). Das kann man sich wie einen Container vorstellen. Man kann Git rein lokal einsetzen, ohne das man einen Onlinedienst wie Github.com nutzt.

  1. Download Git. Für Windows steht eine 32 Bit (kompatiblitätsgründe mit alter Hardware) und eine 64 Bit Variante bereit.

  2. Git installieren. D.h. die Datei "Git-2.18.0-64-bit.exe" (alternativ "Git-2.18.0-32-bit.exe") ausführen. Einstellungen wie vorgeschlage akzeptiert. Neustart (Sicher ist sicher).

  3. Powershell (CLI) starten. Wer bisher Powershell noch nicht genutzt hat, findet z.B. auf dieser Website [][][[[unter Prerequites die notwendigen Einstellungen.

  4. Zeichensatz einstellen. Damit später in einem Browser alle Zeichen korrekt dargestellt werden, muss in Powershell der Zeichensatz auf UTF8 umgestellt werden. Dazu direkt in der Powershell den Befehl "set LC_ALL=C.UTF-8" eingeben.

  5. In PS in das Verzeichnis "Dokumente" wechseln und dort ein Unterverzeichnis "DEV" anlegen. Wechsel in das Verzeichnis "DEV".

  6. Damit mit Repos gearbeitet werden kann, gibt man den Namen des Autors sowie eine E-Mail Adresse an. Das dient rein lokal Git, damit die Versionen einem Autor zugeordnet werden kann. Es wird zu diesem Zeitpunkt in keiner Weise ausserhalb des lokalen Netzes verwendet
    git config --global user.name "Maria Mustermann"
    git config --global user.email "maria.mustermann@example.com"
    Wenn man diese zwei Parameter nicht vorneweg setzt, wird beim ersten Commit Befehl über ein Pop-Up Fenster diese Information eingefordert.

  7. Damit ein neues Verzeichnis namens "doc" für die Repo erstellt und über Git verwaltet wird, verwendet man den Befehl "git init doc". Wenn das Verzeichnis bereits existiert, wird dort ein Unterverzeichnis ".git" mit den Informationen zur Repo hinzugefügt. Git init

  8. "git status" zeigt den Status des Repo an. Typischerweise mit einem Hinweis, was als nächstes getan werden kann. Auf Bildschirmkopie sieht man farblich hervorgehobene Worte sowie in eckigen Klammern "Master". Das ist zu diesem Zeitpunkt nicht relevant, da es die Folge eines Powershell Modules ("posh-git") ist. Bitte ignorieren.

  9. Da das Verzeichnis leer ist, soll eine erste Textdatei namens "test.txt" erstellt werden. Mit dem Windows Befehl "fsutil" kann ich eine Textdatei im aktuellen Verzeichnis "doc" in der gewünschten Grösse - hier 1001 Byte - erstellen: "fsutil file createnew .\test.txt 1001". Über "cat" ist zu sehen, dass die Datei effektiv leer ist. Testdatei erstellen

  10. "git status" zeigt nun einen neuen Abschnitt: "Untracked files". Mit "git add test.txt" wird die Datei der Repo hinzugefügt. Genauer gesagt, dem Index welche die Dateien auflistet, die mit dem nächsten "Commit" Befehl übernommen werden sollen.

  11. Jeder "Commit" Befehl enthält eine Beschreibung, damit man die enthaltenen Änderungen sofort nachvollziehen kann. In diesem Beispiel könnte der Commit Befehl so aussehen: "git commit -m "test.txt erstellt". Mit "git status" kann überprüft werden, dass die Datei wirklich hinzugefügt wurde.

  12. Danach editiere (z.B. mit Notepad) die Datei und schreibe hinein "Das ist eine Ergänzung". Test Datei ändern

  13. "git status" zeigt auch hier an, dass die Änderung nicht getrackt wurde. D.h. auch hier muss die Datei dem Index hinzugefügt werden, damit sie im nächsten Commit Befehl berücksichtigt wird: git "add test.txt". Danach wieder einen Commit absetzen: "git commit -a "test.txt wurde ergänzt".

  14. Mit "git log" werden nun alle Commits angezeigt. Mit Datum, Kommentar und welcher Autor die Änderung gemacht hat.

Mit diesem Beispiel wurde gezeigt, dass Git mit den lokalen Dateien auf drei (logischen) Ebenen arbeitet: "Working Dir": Das Verzeichnis des Repo, wo Dateien hinzugefügt, gelöscht oder geändert werden. "Index": Die für den nächsten Commit vorgemerkten Änderungen aus dem "Working Dir" "Repository" Die Sammlung aller "scharfen" Versionen. D.h. über Commit freigegebenen Änderungen.

Quellen