lago-programming-for-beginners/session-1/git.md
2025-01-28 16:42:45 +01:00

4.3 KiB

Git

Git ist ein Versionskontrollsystem, das zur Nachverfolgung von Änderungen an Dateien und Verzeichnissen eingesetzt wird. Es dient primär der Verwaltung von Softwareprojekten, kann aber für beliebige Datensätze verwendet werden.

Das grundlegende Konzept von Git besteht darin, Änderungen an Dateien in Form von "Schnappschüssen" zu speichern. Diese Schnappschüsse werden als Commits bezeichnet und repräsentieren den Zustand des Projekts zu einem bestimmten Zeitpunkt. Jeder Commit enthält die Informationen über die vorgenommenen Änderungen sowie eine eindeutige Kennung.

Git verfolgt nicht nur die aktuellen Versionen von Dateien, sondern den vollständigen Änderungshistorie. Das ermöglicht es, jederzeit zu früheren Versionen zurückzukehren oder Änderungen von verschiedenen Versionen zu vergleichen.

Hauptfunktionen und Nutzen:

  • Versionskontrolle: Git speichert die gesamte Historie von Dateiänderungen. Dadurch wird ein Überblick über die Entwicklung des Projekts gewährleistet.
  • Wiederherstellung: Bei Bedarf ist es möglich, zu beliebigen vorherigen Zuständen des Projekts zurückzukehren.
  • Zusammenarbeit: Git ermöglicht es, dass mehrere Personen gleichzeitig an einem Projekt arbeiten können. Änderungen werden zusammengeführt und Konflikte können relativ einfach gelöst werden.
  • Verzweigungen (Branches): Git ermöglicht die Erstellung von Verzweigungen, um neue Funktionen oder Experimente zu implementieren, ohne die Hauptversion des Projekts zu beeinflussen.
  • Nachvollziehbarkeit: Git protokolliert, wann, von wem und welche Änderungen an den Dateien vorgenommen wurden.

Kernbegriffe:

  • Repository: Ein Repository ist der Speicherort für das gesamte Projekt, einschließlich der Historie der Änderungen.
  • Commit: Ein Commit ist ein Schnappschuss des Projekts zu einem bestimmten Zeitpunkt.
  • Branch: Ein Branch ist eine unabhängige Entwicklungslinie innerhalb des Projekts. Absolut, hier ist ein prägnantes Git-Cheatsheet, das auf wesentliche Befehle fokussiert:

Git Cheatsheet: Kompakte Befehlsübersicht

Diese Übersicht listet die wichtigsten Git-Befehle für den täglichen Gebrauch auf.

Repository-Management

  • git init: Neues Repository erstellen (im aktuellen Ordner)
  • git clone <URL>: Repository von einer URL kopieren

Arbeitsbereich

  • git status: Status der Änderungen anzeigen
  • git add <Datei>: Datei zur Staging-Area hinzufügen
  • git add .: Alle Änderungen hinzufügen
  • git commit -m "<Nachricht>": Änderungen als Commit speichern
  • git diff: Änderungen seit letztem Commit anzeigen
  • git diff --staged: Änderungen in der Staging-Area anzeigen
  • git restore <Datei>: Änderungen in Datei verwerfen (Arbeitsbereich)
  • git restore --staged <Datei>: Datei aus Staging-Area entfernen

Branch-Verwaltung

  • git branch: Liste der Branches anzeigen
  • git branch <Name>: Neuen Branch erstellen
  • git checkout <Name>: Zu einem Branch wechseln
  • git checkout -b <Name>: Neuen Branch erstellen und wechseln
  • git merge <Name>: Branch in aktuellen Branch zusammenführen
  • git branch -d <Name>: Branch löschen (falls zusammengeführt)
  • git branch -D <Name>: Branch erzwingen löschen

Remote-Interaktion

  • git remote add origin <URL>: Remote-Repository hinzufügen (Name: origin)
  • git remote -v: Konfigurierte Remotes anzeigen
  • git fetch origin: Änderungen von Remote holen
  • git pull origin <Branch>: Änderungen holen und mergen
  • git push origin <Branch>: Lokale Commits auf Remote hochladen

Historie und Logs

  • git log: Commit-Historie anzeigen
  • git log --oneline: Kompakte Commit-Historie
  • git show <Commit-Hash>: Details eines Commits anzeigen

Sonstiges

  • git stash: Unfertige Änderungen temporär sichern
  • git stash pop: Gesicherte Änderungen wiederherstellen
  • git tag <Name>: Tag für einen Commit erstellen

Wichtige Hinweise

  • <Datei>: Einzelne Datei, Pfad oder Platzhalter
  • <Name>: Name eines Branches oder Tags
  • <URL>: URL eines Remote-Repositories
  • origin: Konvention für Standard-Remote
  • Befehle sind case-sensitive

Kurzerklärung

  • Staging-Area: Zwischenschritt vor dem Commit, um Änderungen auszuwählen.
  • Branch: Entwicklungslinie, die unabhängig von anderen ist.
  • Remote: Ein Repository auf einem anderen Server.

Zusatz

  • git help <Befehl>: Hilfe zum Befehl anzeigen