insights by infactory in-factory GmbH Git Basics - einfach erklärt

Dieser Blogeintrag gibt einen schnellen Einblick in die Git basics, richtet sich an Einsteiger und soll das Arbeiten und den Start erleichtern. Es werden die allerersten Schritte gezeigt, die wichtigsten Funktionen vorgestellt, sowie die Vor- und Nachteile betrachtet und ein Vergleich zu SVN gemacht. Für fortgeschrittene User sollen weitere Einträge folgen, die diverse Schwerpunkte, erweiterte Funktionen und grafische GUI Clients aufgreifen.

Was ist Git

Git ist ein verteiltes Versionierungssystem zum Verwalten von Dateien. Typisch für Git sind eine nichtlineare Entwicklung und eine dezentrale Speicherung. Es besteht zwar ein zentrales Repository, aber jeder Nutzer besitzt eine lokale Kopie inklusive der entsprechenden Versionen, welche auch ein Backup darstellen (verteiltes System). Eine durchgehende Verbindung zur Remote-Repository ist somit nicht zwingend notwendig, lediglich zur Synchronisation. Zudem ist Git plattformunabhängig und lässt sich somit in nahezu jeder Umgebung einrichten.

Erste Schritte und wichtigste Funktionen

Git kommt „out of the box“ mit einer Kommandozeile, ohne GUI. Für den Einen ist das eine tolle Sache, andere arbeiten lieber mit einer der vielen graphischen Oberflächen oder nutzen Plug-ins, welche es für diverse Editoren gibt. Ein Vorteil der Kommandozeile im Gegensatz zu all den GUI-Alternativen ist, dass wirklich alle vorhandenen Git-Befehle ausgeführt werden können. Die ersten und wichtigsten Schritte nach der Installation sind folgende:

Die (Basis-)Konfiguration

git config -1 Konfiguration anzeigen
Git config –global user.name „Max Mustermann“ Benutzer einrichten (wird in jedem Commit angezeigt)
git config –global user.email „max.mustermann@in-factory.com“ E-Mail einrichten
git config user.name einzelne Konfiguration abfragen
git config –global init.defaultBranch main Branchnamen „main“ konfigurieren

Das Repository erstellen/klonen

git init ein neues Repository initialisieren (hierzu muss man sich im jeweiligen Verzeichnis befinden)
git status Status im Repository abfragen
git clone /verzeichnis/repository erstellt eine lokale Kopie eines Repositories
git clone benutzername@host:/verzeichnis/repository erstellt eine lokale Kopie eines Remote-Repositories

Der Workflow

„Git definiert drei Hauptzustände, in denen sich eine Datei befinden kann: committet (engl. committed), geändert (engl. modified) und für Commit vorgemerkt (engl. staged).

Modified bedeutet, dass eine Datei geändert, aber noch nicht in die lokale Datenbank eingecheckt wurde.

Staged bedeutet, dass eine geänderte Datei in ihrem gegenwärtigen Zustand für den nächsten Commit vorgemerkt ist.

Committed bedeutet, dass die Daten sicher in der lokalen Datenbank gespeichert sind.“ (vgl. Scott Chacon & Ben Straub, Pro Git (Second Edition)¹, 2021, S. 17)

Verzeichnisbaum - Git basic

Abbildung: Verzeichnisbaum, Staging-Area und Git-Verzeichnis
Quelle: Scott Chacon & Ben Straub, Pro Git¹, Second Edition, 2021, S. 18

Add & Commit

git add Datei hinzufügen (staging)
git add * alle Dateien im Verzeichnis hinzufügen (staging)
git commit Commit „speichert“ die neue Version (betrifft das lokale Repository, nicht das entfernte)
git commit -m „Message Text“ Commit „speichert“ die neue Version mit Kommentar
git log Commits auflisten
git reset Aktion rückgängig machen

Die Änderungen “hochladen”

git push origin Änderungen im lokalen Repository an das Remote-Repository senden
git remote add origin erstelltes Repository hochladen

Branching

Branches, ein wesentlicher Unterschied zu SVN, werden verwendet, um unterschiedliche Entwicklungen voneinander zu isolieren. Der Master- oder auch Main-Branch ist der Hauptzweig eines jeden Repository. In der Entwicklung sollten andere weitere Branches verwendet werden, die dann zum späteren Zeitpunkt mit den Master- bzw. Main-Branch zusammengeführt werden (= merge).

Merge example - git basic

git checkout –b erstellt neuen Branch
git checkout master Branch wechseln zum Master-Branch
git branch –d Branch löschen
git push origin Branch in Remote-Repository hochladen (für andere verfügbar machen)

Update & Merge

git pull neusten Stand vom remote Repository in das lokale Repository ziehen
git merge einen Branch mit dem akt. Repository zusammenführen
git diff Differenzen zwischenzwei Branches anzeigen

Tagging

git tag 1.0.0 neuen Tag erstellen (Releaseteags wie man sie z.B. aus SVN kennt, die Commit_Id wird mit dem Tag referenziert)
git log Commit-Liste anzeigen

Änderung rückgängig machen

git checkout — lokal veränderten Stand auf den eingecheckten Stand zurücksetzen
Git fetch origin
Git reset –hard origin/master
lokale Version verwerfen und Stand vom entfernten Repository holen
git revert Commit rückgängig machen

Lifecycle-Status einer Datei in Git

Der Status Ihrer Dateien im Überblick - git basic

Abbildung: Der Status Ihrer Dateien im Überblick
Quelle: Scott Chacon & Ben Straub, Pro Git¹, Second Edition, 2021, S. 30

Vorteile

  • Paralleles Arbeiten (dezentral, branching)
  • Absicherung durch verteiltes Repository
  • Flexibilität durch verschiedene Arbeitsweisen
  • Offline Arbeit möglich da dezentral und verknüpfbare Struktur
  • Erweiterbarkeit (diverse Webclients und Plug-ins)
  • Kostenlos

Nachteile und Kritik

Ein grosser Kritikpunkt ist die nicht so leichte Erlernbarkeit. Für Einsteiger ist die Terminologie zum Teil neu und Nutzer anderer Systeme sind manchmal irritiert, z.B. „-revert“ bedeutet in SVN was anderes als in Git.

Wenn man z.B. aus einem Grund die Strukturen leerer Verzeichnisse vollständig aufzeichnen möchte, ist Git nicht geeignet. Wenn die Verzeichnisse über keinen Inhalt verfügen, verwirft Git diese.

Vergleich mit SVN

Ob Git oder SVN, sie sind die zwei wohl bekanntesten unter Ihrer Art und beide haben Ihre jeweiligen Vor- und Nachteile. Anbei die relevantesten Unterschiede:

Git SVN
Versionsverwaltung verteilt zentral
Repository lokale Repository-Kopien, in denen entwickelt wird zentrales Repository, in dem Arbeitsfortschritte erstellt werden
Verbindung mit Netzwerk nur zur Synchronisation erforderlich bei jedem Zugriff
Berechtigung/Zugriff gesamtes Verzeichnis pfadbasiert
Änderungen zeichnet Inhalte auf zeichnet Dateien auf
Nachvollziehbarkeit/Historie Repository und lokale Kopien enthalten komplette Historie nur im Repository vollständig, lokale Kopien beinhalten lediglich die aktuellste Version

¹Das Buch steht kostenlos hier zum Download

Autor: Arkadius Buchatz

SIE HABEN FRAGEN? WIR HABEN DIE ANTWORTEN!

Schreiben Sie uns. Wir freuen uns auf Ihre Nachricht!

E-MAIL SCHREIBEN