W3docs

Was ist Git

Definition und Bedeutung von Git, sowie Informationen zu Performance, Sicherheit und Flexibilität als Versionskontrollsystem.

Dieses Kapitel erklärt, was Git ist, warum es zum Standard für die Verfolgung von Quellcode wurde und wie seine Designentscheidungen – verteilte Historie, inhaltsbasierte Speicherung und kostengünstige Branching-Operationen – in praktische Vorteile für Entwickler und Teams umgesetzt werden. Am Ende werden Sie verstehen, wo Git seinen Platz hat, die wichtigsten Befehle für den Einstieg kennen und wissen, welche verwandten Kapitel Sie als Nächstes lesen sollten.

Definition

Git ist ein Versionskontrollsystem (VCS), das Änderungen an einer Menge von Dateien über die Zeit aufzeichnet, sodass Sie jede frühere Version abrufen, nachvollziehen können, wer was geändert hat, und gleichzeitig am selben Projekt arbeiten können, ohne die Arbeit anderer zu überschreiben. Es ist das am weitesten verbreitete VCS in der Softwareentwicklung.

Git wurde 2005 von Linus Torvalds, dem Autor des Linux-Kernels, erstellt, um den Quellcode von Linux zu verwalten, nachdem das Projekt den Zugang zu seinem bisherigen Werkzeug verloren hatte. Heute betreibt es Projekte jeder Größe, von einem einzelnen Skript bis hin zum Linux-Kernel selbst.

Das charakteristische Merkmal von Git ist, dass es verteilt ist. Anstatt die Projekthistorie auf einem zentralen Server zu speichern, klont jeder Entwickler eine vollständige Kopie des Repositorys – inklusive der gesamten Historie – auf seinen eigenen Rechner. Sie können committen, branchen, den Verlauf anzeigen und das Log vollständig offline durchsuchen; das Netzwerk wird nur benötigt, um Arbeit mit anderen zu teilen.

Verteilt vs. zentralisiert. In einem zentralisierten VCS (wie Subversion) gibt es einen maßgeblichen Server, und das Committen erfordert eine Netzwerkverbindung. In einem verteilten VCS wie Git ist jeder Klon ein vollständiges Backup, die meisten Operationen erfolgen lokal und sind daher schnell, und es gibt keinen Single Point of Failure.

Bedeutung von Git

Git ist ein schnelles, effizientes verteiltes VCS, das Projekte jeder Größe verwaltet, von kleinen Skripten bis hin zu sehr großen Codebasen. Einige Gründe, warum es in der täglichen Arbeit wichtig ist:

  • Kostengünstiges lokales Branching. Das Erstellen eines Branches ist nahezu sofort, da Git nur einen kleinen Zeiger schreibt, sodass das Experimentieren in Isolation zur Norm wird, anstatt eine Ausnahme zu sein. Siehe git branch.
  • Ein praktischer Staging-Bereich. Git ermöglicht es Ihnen, genau festzulegen, welche Änderungen in den nächsten Commit aufgenommen werden, bevor Sie ihn aufzeichnen, was jeden Commit fokussiert hält. Siehe git add.
  • Mehrere Workflows. Dasselbe Werkzeug unterstützt einen Einzelentwickler und ein 100-köpfiges Team. Siehe Git workflows.
  • Kostenlos und Open Source. Es fallen keine Lizenzkosten an, und der Quellcode ist zur Überprüfung und zum Beitrag offen.
  • Nichtlineare Entwicklung. Viele Arbeitslinien können parallel verlaufen und später zusammengeführt werden, sodass Entwickler und Teams getrennt arbeiten können, ohne einander zu stören.

Source Code Management

Performance von Git

Git ist auf Geschwindigkeit ausgelegt, und der Großteil dieser Geschwindigkeit ergibt sich daraus, dass Operationen gegen das lokale Repository statt gegen einen Remote-Server ausgeführt werden. Branching, Merging, Committen und das Vergleichen früherer Versionen sind alle optimiert, um sich auch bei langen Historien sofort anzufühlen.

Eine wichtige Designentscheidung ist, dass Git Inhalte verfolgt, keine Dateien. Beim Committen speichert Git einen Schnappschuss des Inhalts jeder Datei; wenn eine Datei zwischen Commits unverändert ist, speichert Git einen Zeiger auf den bereits vorhandenen identischen Inhalt und keine neue Kopie. Da der Speicher auf Inhalten basiert, kann Git erkennen, wenn eine Datei lediglich umbenannt, aufgeteilt oder umstrukturiert wurde. Auf dem Datenträger verwenden Repository-Objekte eine Kombination aus Delta-Kodierung (Speicherung von Unterschieden zwischen ähnlichen Objekten) und zlib-Komprimierung, was auch lange Historien kompakt hält.

Sicherheit von Git

Die oberste Priorität von Git ist die Integrität des verwalteten Quellcodes. Jedes Objekt in einem Repository – Dateiinhalte, Verzeichnisse, Commits und Tags – wird durch einen kryptografischen Hash seines Inhalts identifiziert. Da der Hash jedes Commits auch den Hash seines übergeordneten Commits einschließt, ist die gesamte Historie miteinander verknüpft: Jede Änderung vergangener Inhalte würde jeden nachfolgenden Hash verändern, was stilles Manipulieren erkennbar macht.

Git verwendete historisch SHA-1 für diese Hashes und befindet sich im Übergang zu SHA-256, um diese Garantie zu stärken. Über die Integrität hinaus können Sie auch überprüfen, wer einen Commit erstellt hat, indem Sie Commits und Tags signieren mit einem GPG- oder SSH-Schlüssel, sodass Reviewer bestätigen können, dass eine Änderung von einem vertrauenswürdigen Autor stammt.

Flexibilität von Git

Einer der Vorteile von Git ist seine Flexibilität in mehreren Aspekten:

  • Änderungen verfolgen – Jeder Commit enthält einen Autor, einen Zeitstempel und eine Nachricht, sodass Sie immer über eine lesbare Aufzeichnung verfügen, was geändert wurde und warum.
  • Backup und Wiederherstellung – Da jeder Klon die vollständige Historie enthält, ist der Rechner jedes Entwicklers effektiv ein Backup, und jeder vergangene Zustand kann wiederhergestellt werden.
  • Zusammenarbeit – Teams können gleichzeitig am selben Projekt arbeiten und ihre Arbeit durch Merging zusammenführen.
  • Branching und Merging – Die Arbeit findet in einem Branch statt, und sobald sie überprüft und genehmigt wurde, wird sie in den Hauptbranch gemergt. Die Historie zeigt, wer welche Datei geändert hat und genau welche Zeilen sich unterscheiden.
  • Deployment – Git deployed keinen Code selbst, verfolgt aber exakte Versionen und integriert sich nahtlos in CI/CD-Pipelines, die diese Versionen erstellen und ausliefern.

Flexibilität von Git

Versionskontrolle mit Git

Heutzutage ist Git das bevorzugte Versionskontrollsystem, da es fast alles bietet, was Entwickler für effektivere Ergebnisse benötigen. Die Hauptgründe dafür sind im Folgenden aufgeführt:

  • Git ist so weit verbreitet, dass die Mehrheit der Entwickler damit arbeiten kann, noch bevor sie ihr Studium abgeschlossen haben. Außerdem gilt Git als Grundlage der Versionskontrollsysteme, da Entwickler, die es bereits beherrschen, sich leicht andere Systeme aneignen können.
  • Aufgrund seiner Verbreitung sind viele wichtige Softwaretools und -dienste in Git integriert.
  • Es gibt zahlreiche Bücher, Tutorials und sogar spezialisierte Websites, die Entwicklern helfen können, Git zu erlernen.
  • Da Git Open-Source-Software ist, haben Entwickler die Möglichkeit, es kostenlos zu nutzen.

Der Hauptkritikpunkt an Git ist die Schwierigkeit des Erlernens. Insbesondere können einige in Git verwendete Begriffe andere Definitionen haben als in anderen VCS. Es lohnt sich jedoch, es zu lernen, da die Fähigkeit, Git zu verwenden, ein ausgezeichneter Vorteil für Teams und einzelne Entwickler ist und einer der Schlüssel zu ihrem zukünftigen Erfolg.

Die beliebtesten Git-Lösungen

Mehrere Drittanbieter-Plattformen verwalten Git-Repositories und werden häufig für eine schnelle und effektive Softwareentwicklung eingesetzt. Die beliebtesten Git-basierten Hosting-Dienste sind GitHub, Bitbucket und GitLab.

GitHub ist ein Git-basierter Repository-Host, der ursprünglich 2008 von Tom Preston-Werner, Chris Wanstrath und PJ Hyatt gestartet wurde. Es ist die größte Repository-Hosting-Plattform mit mehr als 38 Millionen Projekten. Es ermöglicht das Hosten und Überprüfen von Code, das Verwalten von Projekten und das Entwickeln von Software.

Bitbucket wurde 2008 von einem australischen Startup gestartet und unterstützte ursprünglich nur Mercurial-Projekte. Im Jahr 2010 wurde Bitbucket von Atlassian übernommen, und ab 2011 begann es, Git-Hosting zu unterstützen, was jetzt sein Hauptfokus ist. Es bietet kostenlose unbegrenzte private Repos, Jira- und Trello-Integration und integrierte Continuous Delivery.

GitLab begann 2011 als Projekt von Dmitriy Zaporozhets und Valery Sizov mit dem Ziel, eine Alternative zu den verfügbaren Repository-Management-Lösungen anzubieten. Das Unternehmen wurde jedoch erst 2014 gegründet. Es bietet Continuous Integration und Delivery, agile Entwicklung, Auto DevOps usw.

Grundlegende Git-Befehle

Sobald Git installiert ist, decken einige Kernbefehle den alltäglichen Workflow ab:

  • git init – Erstellt ein neues Git-Repository im aktuellen Verzeichnis.
  • git clone <url> – Lädt ein bestehendes Repository mit vollständiger Historie von einem Remote-Server herunter.
  • git add <file> – Staged Änderungen, sodass sie in den nächsten Commit aufgenommen werden.
  • git commit -m "message" – Zeichnet die gestagten Änderungen als neuen Schnappschuss mit einer beschreibenden Nachricht auf.
  • git status – Zeigt, welche Dateien geändert, gestaged oder nicht verfolgt werden.
  • git push – Lädt lokale Commits in ein Remote-Repository hoch.

Ein erstes Repository von Anfang bis Ende

Die folgende Sequenz startet ein neues Projekt, zeichnet einen ersten Commit auf und untersucht das Ergebnis. Führen Sie diese Befehle in einem leeren Ordner aus, um mitzumachen:

# 1. Start tracking the current folder
git init

# 2. Create a file and stage it for the next commit
echo "# My Project" > README.md
git add README.md

# 3. Record the snapshot
git commit -m "Add project README"

# 4. See the history you just created
git log --oneline

Die Ausgabe von git log --oneline ist eine Zeile pro Commit – ein kurzer Hash gefolgt von der Nachricht:

a1b2c3d (HEAD -> main) Add project README

Von hier aus würden Sie einen Remote hinzufügen und git push ausführen, um die Arbeit zu teilen, oder einen Branch erstellen, um ein neues Feature zu beginnen. Das Kapitel git log geht tiefer auf das Lesen der Historie ein.

Übungen

Übung
Was sind die wichtigsten Funktionen und Vorteile von Git?
Was sind die wichtigsten Funktionen und Vorteile von Git?
Was this page helpful?