Inhalt
Versionierung mit Git
GIT ist ein verteiltes Versionskontrollsystem, das von Einzelpersonen und Teams verwendet wird, um die Entwicklung von Softwareprojekten zu verwalten. Es hilft bei der Nachverfolgung von Änderungen, erleichtert die Zusammenarbeit und ermöglicht es, zu früheren Versionen eines Projekts zurückzukehren.
1. Installation von GIT
GIT Installieren
Download und Installation von GIT: Besuche git-scm.com und lade die passende Version für dein Betriebssystem herunter.
Authentifizierung mittels SSH am Beispiel von GitHub
1. Überprüfen, ob ein SSH-Schlüssel vorhanden ist
ls -al ~/.ssh
Falls Dateien wie id_rsa
und id_rsa.pub
oder id_ed25519
und id_ed25519.pub
vorhanden sind, hast du bereits ein SSH-Schlüsselpaar.
2. Falls kein Schlüssel vorhanden → neuen Schlüssel anlegen
ssh-keygen -t ed25519 -C "deine.email@domain.at"
Generating public/private ed25519 key pair.
Enter file in which to save the key (~/.ssh/id_ed25519): ~/.ssh/id_ed25519
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ~/.ssh/id_ed25519
Your public key has been saved in ~/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:VfG7pA5KD+J/z6sK+E1N58Lr7kW8Y3tjzPX2Wc8P9Dk deine.email@domain.at
The key's randomart image is:
+--[ED25519 256]--+
| . .o. |
| . . o o |
| . . o + |
| +..o.. . |
| . S..o. |
| .oo + |
| ..Eo.o. |
| .+o=.o. |
| .o+o. |
+----[SHA256]-----+
Die ASCII-Kunst (Random Art) wird von OpenSSH automatisch generiert, um eine visuelle Repräsentation des SSH-Schlüssels zu bieten. Sie hilft dabei, Fingerprints schneller zu erkennen und manuelle Vergleiche zu erleichtern.
3. SSH-Agent starten und Schlüssel hinzufügen
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519 # oder ~/.ssh/id_rsa
4. Öffentlichen Schlüssel zu GitHub hinzufügen
cat ~/.ssh/id_ed25519.pub
Anzeigen des Schlüssels
Auf github.com:
- Gehe zu GitHub → Einstellungen (Profilbild oben rechts anklicken).
- Links unter SSH and GPG keys → New SSH key klicken.
- Einen Namen vergeben (z. B. “Mein Laptop”).
- Den kopierten Schlüssel in das Feld einfügen und speichern.
Verbindung zu GitHub testen
ssh -T git@github.com
Falls alles klappt, siehst du eine Meldung wie:
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
Falls nicht, überprüfe:
- Ob du den richtigen öffentlichen Schlüssel zu GitHub hinzugefügt hast.
- Ob der SSH-Agent läuft (
eval "$(ssh-agent -s)"
). - Ob der Schlüssel geladen wurde (
ssh-add -l
).
2. Funktionsweise von GIT
Hier der vereinfachte, grundlegende Arbeitsablaufs mit Git:
┌─────────────────────┐ │ Working Directory │ (Lokale Dateien/Quellcode) └─────────┬───────────┘ │ │ git add <datei> (Änderungen vormerken) ▼ ┌────────────────────┐ │ Staging Area │ └─────────┬──────────┘ │ │ git commit -m "Nachricht" (Änderungen festschreiben) ▼ ┌────────────────────┐ │ Lokales Repo │ └─────────┬──────────┘ │ │ git push origin <branch> (Änderungen hochladen) ▼ ┌─────────────────────┐ │ Remote Repository │ (z.B. GitHub) └─────────────────────┘
Funktionsweise von GIT
Working Directory
: Lokales Verzeichnis, in dem die Dateien bearbeitet werden.git add
: Markiert Änderungen, die in den nächsten Commit aufgenommen werden sollen (Staging Area).git commit
: Schreibt diese „gestagten“ Änderungen in deinen lokalen Git-Verlauf (lokales Repository).git push
: Überträgt die lokalen Commits in das zentrale oder entfernte Repository (z. B. auf GitHub).
3. Anlegen eines Git-Repositories
Insbesondere in der Softwareentwicklung sorgt Git dafür, dass mehrere Personen gleichzeitig an demselben Code arbeiten können, ohne einander in die Quere zu kommen. Bevor man allerdings loslegen kann, muss dein Projekt unter Versionskontrolle gestellt werden. Dabei gibt es zwei übliche Wege:
- Man erstellst zuerst ein leeres Repository auf einem Git-Server (z.B. GitHub, GitLab, Gitea, etc.) und klont dieses anschließend auf ein lokales Gerät.
- Man wandelt ein existierendes, lokales Verzeichnis in ein Git-Repository um und verknüpft es danach mit einem leeren Remote-Repository auf dem Git-Server.
3.1. Leeres Projekt auf dem Git-Server anlegen und klonen
Ablauf
- Neues Repository auf dem Git-Server erstellen
- Anmelden auf einem/r Gitserver/Git-Plattform (z.B. GitHub, Gitea, …)
- Neues Repository erstellen, Namen vergeben, Sichtbarkeit festlegen
- Repository klonen
- Clone-URL (HTTPS oder SSH) kopieren.
- Im Terminal / Kommandozeile auf dem lokalen Rechner:
git clone <deine-Repo-URL>
Der Befehl erstellt eine lokale Kopie, die bereits ein
.git
-Verzeichnis enthält und mit dem Remote-Repository auf dem Server verknüpft ist.
- Dateien hinzufügen
- In den frisch geklonten Ordner wechseln:
cd <dein-Repo-Ordner>
- Projektdateien anlegen oder vorhandene Dateien in dieses Verzeichnis kopieren.
- In den frisch geklonten Ordner wechseln:
- Commit und Push
- Alle Dateien zur Versionskontrolle hinzufüge:
git add .
- Einen ersten Commit erstellen:
git commit -m "Beschreibung zum ersten Commit"
- Änderungen auf den Server übertragen:
git push origin main
Benutzernamen und E-Mail setzen
Git speichert bei jedem Commit den Namen und die E-Mail-Adresse des Commiters. Dazu müssen diese Informationen gesetzt werden:
Für alle Repositories
git config --global user.name "Max Muster" git config --global user.email "max.muster@gmail.com"`
Nur für dieses Repository
git config user.name "Max Muster" git config user.email "max.muster@gmail.com"`
- Alle Dateien zur Versionskontrolle hinzufüge:
3.2. Lokales Git-Repository mit einem Remote verbinden
Ablauf
- Lokales Verzeichnis initialisieren
- Öffne das Terminal im Ordner deines bereits existierenden Projekts, etwa:
cd /pfad/zu/deinem/projekt
- Initialisiere Git:
git init
- Jetzt ist dein Ordner ein Git-Repository. Ein
.git
-Verzeichnis wurde angelegt.
- Öffne das Terminal im Ordner deines bereits existierenden Projekts, etwa:
- Ersten Commit lokal anlegen
- Füge bestehende Dateien zur Versionskontrolle hinzu:
git add .
- Erstelle deinen ersten Commit:
git commit -m "Initial commit from local project"
- Füge bestehende Dateien zur Versionskontrolle hinzu:
- Remote Repository anlegen
- Gehe zu GitHub oder GitLab und klicke auf „New Repository“ bzw. „New Project“.
- Lass das Repository wieder komplett leer (ohne README, .gitignore, etc.).
- Remote hinzufügen
- Kopiere die URL deines neu angelegten (leeren) Remote-Repositorys.
- Verknüpfe dein lokales Projekt mit diesem Remote:
git remote add origin <deine-Repo-URL>
- Prüfe, ob die Verbindung richtig gesetzt wurde:
git remote -v
- Änderungen hochladen
- Lade deinen lokal erstellten Commit in das entfernte Repository hoch:
git push -u origin main
- Falls der Git-Server den Standard-Branch
master
nennt oder ein anderer Branch verwenden werden soll, passemain
entsprechend an.
- Lade deinen lokal erstellten Commit in das entfernte Repository hoch:
4. Git‐Workflow für Einzelpersonen
- Repository einrichten
- Erstelle entweder lokal mit
git init
ein neues Git‐Repository oder klone ein bereits angelegtes (z. B. von GitHub). - Richte (falls nötig) ein Remote‐Repo ein, um deinen Code zu sichern oder von verschiedenen Rechnern aus daran zu arbeiten.
- Erstelle entweder lokal mit
- Regelmäßig committen
- Bearbeite deine Dateien im Working Directory.
- Nutze
git add
undgit commit
, um logische Arbeitsschritte festzuhalten. Regelmäßige, kleine Commits mit präzisen Commit‐Nachrichten helfen dir, deinen Fortschritt nachzuvollziehen.
- Synchronisation (optional)
- Falls du ein Remote‐Repository nutzt (z. B. GitHub), lade deine Commits mit
git push origin main
hoch. - Nutze
git pull
, wenn du auf verschiedenen Rechnern arbeitest, um immer den aktuellen Stand herunterzuladen.
- Falls du ein Remote‐Repository nutzt (z. B. GitHub), lade deine Commits mit
- Branches verwenden (optional)
- Als Einzelperson kannst du direkt in
main
odermaster
arbeiten, oder feature‐bezogene Branches anlegen, wenn du unterschiedliche Ideen oder experimentelle Features austesten möchtest. - Sobald ein Feature fertig ist, mergst du es zurück in
main
.
- Als Einzelperson kannst du direkt in
Vorteile (alleine):
- Du hast die volle Kontrolle und musst dich nicht mit Merge‐Konflikten anderer Personen herumschlagen.
- Dein Commit‐Zeitpunkt ist flexibel, da nur du daran arbeitest.
5. Git‐Workflow für das Arbeiten im Team, erweiterte Konzepte
Branches
Code Reviews und Pull Requests
Konflikte
Gitignore
Übersicht der wichtigsten Kommandozeilenbefehle
Verzeichnisse, Dateien und Navigation
Operation | Windows (CMD/PowerShell) | macOS/Linux (bash/zsh) | Erläuterung |
---|---|---|---|
Verzeichnis wechseln | cd <Ordner> cd .. |
cd <Ordner> cd .. |
cd steht für change directory. .. wechselt ins übergeordnete Verzeichnis. |
Laufwerk wechseln | C: oder D: |
(macOS hat keine Laufwerks-Buchstaben) | Unter Windows wechselt man so das Laufwerk. Unter macOS greift man z. B. über /Volumes/Name auf andere Medien zu. |
Verzeichnis anlegen | md <Ordner> |
mkdir <Ordner> |
Erstellt einen neuen Ordner. |
Verzeichnis löschen (leer) | rd <Ordner> |
rmdir <Ordner> |
Löscht einen leeren Ordner. |
Verzeichnis löschen (inkl. Inhalt) | rd <Ordner> /s |
rm -r <Ordner> |
Löscht Ordner inklusive aller Unterordner und Dateien. Vorsicht: Irreversibel! |
Datei löschen | del <Datei> |
rm <Datei> |
Löscht eine Datei. |
Datei/Ordner umbenennen | rename <alt> <neu> (Ordner): ren <alt> <neu> |
mv <alt> <neu> |
Ändert den Namen einer Datei oder eines Ordners. |
Datei/Ordner verschieben | move <Quelle> <Ziel> |
mv <Quelle> <Ziel> |
Verschiebt eine Datei/ein Verzeichnis. |
Aktuelles Verzeichnis anzeigen | (Windows zeigt Pfad in der Prompt-Zeile) | pwd |
Zeigt das aktuelle Arbeitsverzeichnis an. (In Windows CMD ist der Pfad meist direkt in der Eingabeaufforderung ersichtlich.) |
Inhalt eines Verzeichnisses | dir |
ls |
Zeigt alle Dateien und Ordner im aktuellen Verzeichnis an. |
Detail-Anzeige (Dateiliste) | dir (zeigt Standard-Infos) oder dir /w / dir /p für unterschiedliche Darstellungen |
ls -l |
/w zeigt Dateinamen breitflächig, /p seitenweise. ls -l listet Dateidetails (Größe, Rechte, Datum) auf. |
Konsole leeren | cls |
clear |
Räumt den Bildschirm in der Konsole auf. |
Weitere nützliche Befehle
Operation | Windows | macOS/Linux | Erläuterung |
---|---|---|---|
Dateiinhalt anzeigen | type <Datei> |
cat <Datei> |
Zeigt den Inhalt einer Textdatei in der Konsole an. |
Umgebungsvariablen prüfen | echo %VARIABLE% (CMD) $Env:VARIABLE (PowerShell) |
echo $VARIABLE |
Gibt den Wert einer Umgebungsvariablen aus (z. B. PATH ). |
Ausgabe umlenken | > und >> (z. B. dir > liste.txt ) |
> und >> (z. B. ls > liste.txt ) |
Lenkt die Ausgabe eines Befehls in eine Datei um (> überschreibt, >> hängt an). |
Programm/Datei suchen | where <Programm> |
which <Programm> |
Zeigt den Pfad zu einer ausführbaren Datei (z. B. git ). |
Beenden/Exit | exit |
exit |
Beendet die aktuelle Konsole oder Sitzung. |
Git-Nutzung: Wichtige Ergänzungen für die Konsole
Wenn du Git über die Konsole benutzt, brauchst du zusätzlich zu den oben genannten Shell-Befehlen vor allem die Git-Befehle selbst (z. B. git init
, git add
, git commit
, git status
, git push
, git pull
, usw.). In Kombination mit den allgemeinen Systembefehlen gelingt dir so die komplette Projektverwaltung:
- Verzeichnishandling:
cd
,mkdir
,rm -r
, etc. (siehe Tabelle) - Git-Befehle:
git init
: Neues lokales Repository anlegengit add
: Dateien zum Staging-Bereich hinzufügengit commit
: Änderungen festschreibengit status
: Aktuellen Status anzeigengit push
/git pull
: Änderungen ins Remote-Repository hochladen / von dort holengit clone
: Ein bestehendes Remote-Repository lokal kopieren
Durch die Kombination dieser beiden Bereiche (System- und Git-Befehle) kannst du sowohl im Dateisystem navigieren, Dateien/Ordner verwalten als auch deine Versionskontrolle vollständig über das Terminal abwickeln.
Ressourcen
- Versionskontrolle mit Git