Git
Git ist eine Versionsverwaltung für Software-Quellcode, das heißt: jede Änderung am Quellcode wird versioniert und mit einem Kommentar versehen, so daß sich am Ende eine genaue Dokumentation ergibt, wer wann was (und bei aussagekräftigen Kommentaren auch warum) am Code hinzugefügt, verändert oder gelöscht hat.
Was sich zunächst wie ein Traum für Betriebswirte und Controller anhört, ist allerdings für deren Ziele absolut ungeeignet: Git dient der Dokumentation und Kommunikation unter Entwicklern!
Im Kern ist die Sache einfach und mit einem Beispiel vielleicht am Besten erklärt. Nehmen wir also an, wir haben ein kleines Programm namens “Hello World”, das so aussieht (hier in Python, aber LaTeX, Golang, Perl, C, C++, PHP, Ruby, HTML, CSS, ECMA- bzw. JavaScript, … gehen natürlich auch):
print("Hello World!")Jetzt ist das im deutschsprachigen Raum aber ein bisschen blöd, wenn das Programm seinen Text in Englisch ausgibt, also werden wir es auf Deutsch umschreiben. Aber huch, wir haben noch kein Repository! Also erzeugen wir uns zunächst eines, das geht auch lokal, gehen hinein, und legen dann unser Miniprogramm “hello.py” an – die $-Zeichen am Beginn einer Zeile zeigen meine Befehle an, der Rest ist die Antwort des betreffenden Befehls:
$ git init hello
Leeres Git-Repository in /home/luke/Spielchen/hello/.git/ initialisiert
$ cd hello/
$ echo 'print("Hello World!")' > hello.pyJetzt schauen wir uns mit “git status” den Status unseres Repository an und erhalten folgende Antwort:
$ git status
Auf Branch master
Noch keine Commits
Unversionierte Dateien:
(benutzen Sie "git add <Datei>...", um die Änderungen zum Commit vorzumerken)
hello.py
nichts zum Commit vorgemerkt, aber es gibt unversionierte Dateien
(benutzen Sie "git add" zum Versionieren)Oh, huch! Unser Repository kennt die neue Datei “hello.py” noch gar nicht, das müssen wir ändern. Und dann machen wir noch einen klugen Kommentar, warum wir die Datei hinzugefügt / geändert haben:
$ git add hello.py
$ git commit -m 'super Datei hinzugefügt'
[master (Root-Commit) abfc144] super Datei hinzugefügt
1 file changed, 1 insertion(+)
create mode 100644 hello.pyJetzt kann ich abfragen, was passiert ist:
$ git log
commit b21f8d766081d3c997c7ac995588a03ac7238ba2 (HEAD -> master)
Author: Lutz Badenheuer <software@lukenukem.de>
Date: Sun Jul 27 22:35:41 2025 +0200
super Datei hinzugefügtYay! Und wenn ich mir anschauen möchte, wer wann was…
$ git blame hello.py
^b21f8d7 (Lutz Badenheuer 2025-07-27 22:35:41 +0200 1) print("Hello World!")Ändern wir die Datei und schauen, was Sache ist:
$ echo 'print("Hallo Welt!")' >> hello.py
$ git status
Auf Branch master
Änderungen, die nicht zum Commit vorgemerkt sind:
(benutzen Sie "git add <Datei>...", um die Änderungen zum Commit vorzumerken)
(benutzen Sie "git restore <Datei>...", um die Änderungen im Arbeitsverzeichnis zu verwerfen)
geändert: hello.py
keine Änderungen zum Commit vorgemerkt (benutzen Sie "git add" und/oder "git commit -a")Ach so, wir müssen die Änderungen… genau: hinzufügen und mit einem Kommentar versehen:
$ git add hello.py
$ git commit -m 'deutsche Ausgabe eingebaut'
[master 83a297c] deutsche Ausgabe eingebaut
1 file changed, 1 insertion(+)
$ git log
commit 83a297c6f9aa92e4e713d7dbf0703f8c9e7cd746 (HEAD -> master)
Author: Lutz Badenheuer <software@lukenukem.de>
Date: Sun Jul 27 22:45:16 2025 +0200
deutsche Ausgabe eingebaut
commit b21f8d766081d3c997c7ac995588a03ac7238ba2
Author: Lutz Badenheuer <software@lukenukem.de>
Date: Sun Jul 27 22:35:41 2025 +0200
super Datei hinzugefügt
$ git blame hello.py
^b21f8d7 (Lutz Badenheuer 2025-07-27 22:35:41 +0200 1) print("Hello World!")
83a297c6 (Lutz Badenheuer 2025-07-27 22:45:16 +0200 2) print("Hallo Welt!")Huch! Wir sehen genau: dieser Badenheuer hat um 22:35 die erste und um 22:45 die zweite Zeile zu unserem Programm angepackt.
Okay, das ist ein bisschen Basis, Git kann noch sehr viel mehr. Also, ich meine: SEHR viel mehr. Zum Beispiel mit einem Remote-Repository arbeiten, das kennt Ihr von Github und Gitea. Oder bei bestimmten Ereignissen vordefinierte Skripte aufrufen, verschiedene Zweige der Software verwalten, Markierungen (Tags) für bestimmte Commits setzen und noch so, so, so viel mehr. Das Schöne ist: am Anfang muß niemand Git in seiner ganzen Funktionalität nutzen oder gar verstehen, es ist schon eine große Hilfe, nur die Basics zu kennen.
Ich selbst beginne neue Softwareprojekte heute immer damit, ein neues Software-Repository anzulegen. Und aus meiner persönlichen Sicht fängt jede auch nur halbwegs professionelle Entwicklung genau damit an.