W3docs

Einführung

Versionskontrollsysteme, Quellcodeverwaltung, was Git ist, Installation, SSH-Schlüssel und Git-Repositories – alles im Überblick.

Versionskontrollsysteme

Dies ist der Einstiegspunkt des Learn-Git-Kurses. Am Ende dieser Einführung wirst du verstehen, was ein Versionskontrollsystem ist, warum Teams darauf angewiesen sind, wie sich Git von älteren Werkzeugen unterscheidet und wie du Git auf deinem Rechner zum Laufen bringst. Jeder Abschnitt unten verweist auf ein vollständiges Kapitel, in dem das Thema ausführlich erklärt wird.

Dies ist der Weg, den dieser Abschnitt abdeckt:

Versionskontrollsystem

Ein Versionskontrollsystem (VCS) ist ein Werkzeug, das Änderungen an einer Menge von Dateien über die Zeit aufzeichnet, sodass du jede frühere Version abrufen, sehen kannst, wer was geändert hat, und parallel arbeiten kannst, ohne sich gegenseitig zu überschreiben. Es wird manchmal auch als Quellcodeverwaltung (SCM) oder Revisionskontrollsystem (RCS) bezeichnet.

Es gibt drei Familien von VCS, die sich darin unterscheiden, wo die History gespeichert wird:

  • Lokale VCS bewahren jede Version in einer Datenbank auf einem einzigen Computer (zum Beispiel das alte rcs-Werkzeug). Einfach, aber ein Festplattenausfall vernichtet alles, und echte Zusammenarbeit ist nicht möglich.
  • Zentralisierte VCS (CVCS) wie Subversion (SVN) oder CVS speichern die vollständige History auf einem zentralen Server. Entwickler checken eine Arbeitskopie aus, aber die History existiert nur auf dem Server. Ist der Server nicht erreichbar, kann niemand committen; geht er ohne Backup verloren, ist die Projekthistory weg.
  • Verteilte VCS (DVCS) wie Git oder Mercurial geben jedem Entwickler eine vollständige Kopie des Repositorys, einschließlich seiner gesamten History. Du kannst committen, branchen und das Log anzeigen, während du vollständig offline bist, und jeder Klon kann die anderen wiederherstellen.

Git ist ein verteiltes VCS, was der Hauptgrund dafür ist, dass es schnell und ausfallsicher ist.

Quellcodeverwaltung

Quellcodeverwaltung (SCM) ist im Wesentlichen ein anderer Name für Versionskontrolle. Es ist die Praxis (und das Werkzeug), Änderungen an einem Quellcode-Repository zu verfolgen, damit du die History überprüfen, Revisionen vergleichen und Merge-Konflikte lösen kannst – die Situation, in der zwei Personen dieselben Zeilen ändern und das Werkzeug einen Menschen benötigt, um zu entscheiden, welche Änderung gewinnt.

SCM ermöglicht es jedem Entwickler, unabhängig auf einem separaten Branch zu arbeiten und die Arbeit später mit einem Merge zusammenzuführen. Neben der reinen History bietet gutes SCM Blame/Annotation, das Taggen von Releases und die Möglichkeit, eine fehlerhafte Änderung in Sekunden rückgängig zu machen.

Versionskontrollsoftware

Versionskontrollsoftware ist das konkrete Programm, das Versionskontrolle für dein Team umsetzt. Für einen einzelnen Entwickler ist es praktisch; für ein Team mit mehreren Entwicklern ist es eine Notwendigkeit, da es der einzige sichere Weg ist, die Arbeit aller zusammenzuführen.

Beliebte Optionen sind Git, Subversion (SVN), CVS, Mercurial und Monotone. Jedes Projekt wählt dasjenige, das zu seinem Workflow passt; Git ist heute bei weitem das am häufigsten verwendete. Die folgenden Kapitel vergleichen ihre Vor- und Nachteile im Detail.

Was ist Git

Git ist das verteilte Versionskontrollsystem, das in den meisten Teilen der Softwarewelt eingesetzt wird. Es verfolgt Änderungen an deinem Quellcode während der Entwicklung und verwaltet Projekte jeder Größe – von einem einzeiligen Skript bis hin zum Linux-Kernel.

Git zeichnet sich aus einigen Gründen aus:

  • Günstige, schnelle lokale Branches — einen Branch zu erstellen ist nahezu augenblicklich, da er lediglich ein Zeiger auf einen Commit ist.
  • Eine Staging-Area — du wählst genau aus, welche Änderungen in den nächsten Commit einfließen, indem du git add verwendest, bevor du git commit ausführst.
  • Funktioniert offline — jede Operation außer der Synchronisation mit einem Remote läuft gegen deine lokale Kopie.
  • Datenintegrität — jeder Commit wird durch einen SHA-1-Hash seines Inhalts identifiziert, sodass Korrumpierungen erkennbar sind.

Git installieren

Die Arbeit mit Git beginnt damit, es zu installieren (oder deine bestehende Kopie zu aktualisieren). Das Installationsprogramm unterscheidet sich je nach Betriebssystem:

  • macOS — der Git für Mac-Installer, Homebrew (brew install git) oder MacPorts.
  • Windows — das offizielle Git für Windows-Paket, das Git Bash enthält.
  • Linux — der Paketmanager deiner Distribution, z. B. sudo apt install git unter Debian/Ubuntu.

Sobald es installiert ist, bestätige die Version im Terminal:

git --version
# git version 2.45.2

Die genaue Versionsnummer, die du siehst, ist die aktuelle zum Zeitpunkt deiner Installation; jedes neuere 2.x-Release ist für diesen Kurs geeignet.

Git-Repository

Ein Git-Repository („Repo") ist der Speicher, der die Dateien deines Projekts zusammen mit der vollständigen History jeder Änderung enthält. Die History befindet sich in einem versteckten .git-Ordner im Stammverzeichnis des Projekts.

Du erstellst ein Repository auf eine von zwei Arten – starte ein neues mit git init oder kopiere ein vorhandenes Remote-Repository mit git clone:

# Turn the current folder into a new, empty repository
git init
# Initialized empty Git repository in /path/to/project/.git/

# Or download an existing project and its full history
git clone https://github.com/user/project.git

SSH-Schlüssel

Ein SSH-Schlüssel ist eine Zugangsberechtigung, die vom SSH-Protokoll (Secure Shell) verwendet wird. SSH ist ein Netzwerkprotokoll, das es dir ermöglicht, sich von einem Computer aus sicher über ein nicht vertrauenswürdiges Netzwerk bei einem anderen anzumelden.

In Git ermöglicht dir ein SSH-Schlüsselpaar (ein privater Schlüssel, den du geheim hältst, und ein öffentlicher Schlüssel, den du auf GitHub, GitLab usw. hochlädst), Push- und Pull-Operationen durchzuführen, ohne jedes Mal dein Passwort eingeben zu müssen. Das Kapitel zu SSH-Schlüsseln führt durch das Erstellen eines Schlüssels und das Hinzufügen zu deinem Konto.

Übung

Übung
Welches der folgenden Merkmale ist ein Feature von Git als Versionskontrollsystem?
Welches der folgenden Merkmale ist ein Feature von Git als Versionskontrollsystem?
Was this page helpful?