Git

Von Torsten Schrade

Hintergrundinformationen

  • Git wurde 2005 von Linus Torvalds für die kollaborative Weiterentwicklung des Linux-Kernels entworfen
  • Warum “Git”? From the Readme: “global information tracker” or “goddamn idiotic truckload of sh*t” (depending on mood)
  • Forschungsdatenmanagement: Änderungen an Forschungsdaten müssen zwingend nachvollziehbar sein
  • Programmierung: Nachhaltige und qualitätsorientierte Softwareentwicklung erfordert Nachvollziehbarkeit und Roll-Back-Fähigkeit für alle Änderungen am Quellcode
  • Schreiben: Bessere Sicherung, bessere Nachvollziehbarkeit, klarere Kontrolle über den Entstehungsprozess eines Textes
  • Versionkontrolle ermöglicht…
    • Änderungen und Entwicklungen von Dateien später leichter nachzuvollziehen
    • mit Unterschiedlichen Ständen einer Datei parallel zu arbeiten und diese Stände wieder zusammenzuführen
    • getätigte Änderungen an Dateien leicht und exakt auf einen bestimmten Stand hin rückgängig zu machen
    • eine effiziente Zusammenarbeit mit anderen Personen an ein und derselben Datei
  • Git verwenden wir im Studiengang als das grundlegende Versionskontrollsystem für alle Aktivitäten

Wichtige Git-Begriffe

Begriff Erklärung
Repository Enthält alle Versionen der Inhalte eines unter Versionskontrolle stehenden Verzeichnisses
Remote Repository Eine entfernte Kopie eines versionskontrollierten Verzeichnisses
Working Directory Das aktuelle Arbeitsverzeichnis
Staging Area Hier werden die Änderungen gesammelt, die für den nächsten Commit in das Repository vorgesehen sind
Commit Übertragen der Änderungen aus der Staging-Area in das Repository
Push Übertragen der Änderungen aus einem lokalen in ein entferntes Repository
Pull Übertragen der Änderungen aus einem entfernten in ein lokales Repository
Checkout Einen Branch oder einen Commit aus der Stagin-Area oder dem Repository in das Working Directory holen
Clone Kopieren eines Remote-Repository auf den lokalen Computer
Branch Separater Zweig mit Änderungen in einem versionskontrollierten Verzeichnis
Merge Zusammenführung von Änderungen zweier Branches
Fork Ableger eines Repositories mit eigenen Änderungen
HEAD Der jeweils aktuelle Branch der in einem Working Directory bearbeitet wird

Git-Kommandos

Repository-Initialisierung
Begriff Erklärung
git init Verzeichnis als Git-Repository initialisieren
git clone protocol://username@domain/repository.git Klonen eines remote Repositorys auf den eigenen Computer
Lokale Aktionen
Begriff Erklärung
git diff Anzeigen von Änderungen an versionierten Dateien
git add . Hinzufügen aller geänderten Dateien eines Verzeichnisses zur Staging-Area
git add -p DATEI Hinzufügen einer geänderten Datei zur Staging-Area
git commit -a Commit aller getrackten Änderungen aller Dateien (überspringt das manuelle Stagen von Dateien)
git commit -m "MESSAGE" Commit der geänderten Dateien im Staging-Bereich in das Repository
 git status  Anzeige des aktuellen Zustands des Working Directory
 git config --list  Anzeige der Git-Konfiguration
 git config [--global] PARAMETER WERT [Globales] Setzen von Konfigurationseinstellungen
Commit-History
Begriff Erklärung
git log Log-Ausgabe aller bisherigen Commits
git log -p DATEI Log-Ausgabe der Commits für eine bestimmte Datei
git blame DATEI Ausgabe, wer wann welche Änderungen an einer Datei ausgeführt hat
git stash Übertragen der lokalen Änderungen aus dem Working Directory in den Zwischenspeicher
git stash pop Übertragen der lokalen Änderungen aus dem Zwischenspeicher in das Working Directory
Branches/Tags
Begriff Erklärung
git branch -av Auflistung aller Branches
git checkout BRANCH Innerhalb des Working Directories in einen Branch wechseln
git branch BRANCH Anlegen eines neuen Branches
git branch -d BRANCH Löschen eines Branches
Update/Publish
Begriff Erklärung
git remote -v Auflistung ader Remote Repositories, die mit einem lokalen Repository verbunden sind
git remote show Anzeigen von Informationen zu einem spezifischen Remote Repository
git pull REMOTE BRANCH Einspielung der Änderungen aus einem Remote Repository in den lokalen HEAD
git fetch REMOTE BRANCH Herunterladen der Änderungen aus einem Remote Repository aber keine direkte Integration in den HEAD
git push REMOTE BRANCH Einspielung der lokalen Änderungen in ein Remote Repository
Merge/Rebase
Begriff Erklärung
git merge BRANCH Integration der Änderungen aus dem angegebenen Branch in den HEAD
git rebase BRANCH Änderungen im HEAD in den angegebenen Branch integrieren
Undo
Begriff Erklärung
git reset --hard HEAD Verferfen aller lokalen Änderungen im Working Directory
git checkout HEAD DATEI Verwerfen der Änderungen an einer einzelnen Datei
git revert COMMIT Rückgängigmachung des letzten Commits
git reset --hard COMMIT Zurücksetzen des HEAD auf den angegebenen Commit (verwirft alle Änderungen seit dem angegebenen Commit)

Linktipps