Git ist ein verteiltes Versionsverwaltungssystem für Quellcode und andere textbasierte Projektdateien.
Es ermöglicht, Änderungen nachvollziehbar zu speichern, frühere Entwicklungsstände wiederherzustellen und die Entwicklung eines Projekts in einzelne, überschaubare Schritte zu gliedern.
Git arbeitet zunächst lokal. Ein Dienst wie GitHub ist für die grundlegende Arbeit mit Git nicht erforderlich.
Repository
Ein Repository ist ein von Git verwaltetes Projektverzeichnis. Es enthält neben den eigentlichen Projektdateien auch die Versionshistorie.
Working Tree
Der Working Tree ist der aktuelle Arbeitsstand der Dateien im Projektverzeichnis.
Staging Area
In der Staging Area werden gezielt die Änderungen gesammelt, die in den nächsten Commit aufgenommen werden sollen.
Commit
Ein Commit speichert einen definierten Entwicklungsstand dauerhaft in der lokalen Git-Historie.
Branch
Ein Branch ist ein Entwicklungszweig. Der Hauptzweig eines neuen Projekts heißt üblicherweise main.
Im Stammverzeichnis des Projekts:
git init
Dadurch wird das aktuelle Verzeichnis zu einem Git-Repository.
Git legt dafür das versteckte Verzeichnis .git an.
git status
Dieser Befehl gehört zu den wichtigsten Git-Befehlen.
Er zeigt unter anderem:
Vor einem Commit sollte der Status grundsätzlich kontrolliert werden.
Eine einzelne Datei:
git add dateiname
Mehrere bestimmte Dateien:
git add datei1 datei2 datei3
Alle Änderungen im aktuellen Projekt:
git add .
git add erstellt noch keinen Commit. Die Änderungen werden lediglich in die Staging Area aufgenommen.
Eine kompakte Übersicht:
git diff --cached --stat
Die vollständigen Änderungen:
git diff --cached
Damit kann vor einem Commit geprüft werden, was tatsächlich gespeichert wird.
git commit -m "Beschreibung der Änderung"
Beispiel:
git commit -m "Geschaeftspartner auf Kontaktmodell umstellen"
Eine Commit-Nachricht sollte kurz und eindeutig beschreiben, welcher fachliche oder technische Entwicklungsstand gespeichert wird.
Ausführliche Darstellung:
git log
Kompakte Darstellung:
git log --oneline
Beispiel:
1773c45 Objekt-Stamm mit Statusmodell implementieren 778ceb0 Datenbankkonfiguration dokumentieren f72336e Initiale Laravel-Basis fuer RoWaBase
Mit der Datei .gitignore wird festgelegt, welche Dateien und Verzeichnisse Git nicht versionieren soll.
Bei einem Laravel-Projekt gehören beispielsweise sensible oder automatisch erzeugte Inhalte nicht ins Repository:
.env /vendor /node_modules
Besonders wichtig ist .env, da diese Datei Passwörter und andere lokale Zugangsdaten enthalten kann.
Eine .env.example kann dagegen versioniert werden. Sie dokumentiert die benötigten Einstellungen, enthält aber keine echten Passwörter.
Ein einfacher Git-Arbeitszyklus:
git status git add <Dateien> git status git diff --cached --stat git commit -m "Beschreibung" git status
Damit ergibt sich der Ablauf:
Nach einem erfolgreichen Commit sollte git status im Idealfall melden:
nothing to commit, working tree clean
Git und GitHub sind nicht dasselbe.
Git ist das Versionsverwaltungssystem und arbeitet auch vollständig lokal.
GitHub ist eine Online-Plattform, auf der Git-Repositories gespeichert, synchronisiert und gemeinsam bearbeitet werden können.
Die lokale Versionsverwaltung sollte daher unabhängig von GitHub verstanden und eingerichtet werden.
RoWaBase verwendet Git bereits während der Entwicklung.
Dabei werden fachlich zusammengehörige Änderungen möglichst in eigenen Commits gespeichert.
Beispiele:
Initiale Laravel-Basis fuer RoWaBase Datenbankkonfiguration dokumentieren Objekt-Stamm mit Statusmodell implementieren Geschaeftspartner auf Kontaktmodell umstellen
Dadurch entsteht eine nachvollziehbare Entwicklungshistorie und ein stabiler Rückkehrpunkt nach jedem größeren Arbeitsschritt.
Git speichert nicht einfach Dateien – Git dokumentiert Entwicklungsstände.
Deshalb sollten Commits klein, nachvollziehbar und fachlich zusammengehörig sein.