Zum Hauptinhalt springen

git-cheat-sheet

Hilfe erhalten / Dokumentation anzeigen

git command --help

Hilfe (manpage anzeigen) für den angegebenen Befehl erhalten, z.B. git add --help.

Globale Konfiguration

git config --global user.name 'Dein Name' git config --global user.email 'dein.name@smail.th-koeln.de'

Führe dies einmal aus, damit deine Snapshots (d.h. Commits) korrekte Autorendaten enthalten.

Ein Repository erstellen

git init [Verzeichnis]

Erstellt ein neues Repository im angegebenen Verzeichnis. Wenn du Verzeichnis nicht angibst, wird das aktuelle Verzeichnis verwendet. Wenn Verzeichnis nicht existiert, wird es erstellt.

git clone repository

Erstellt eine lokale Kopie des angegebenen Repositorys. Meistens wird Repository eine SSH-Verbindungsspezifikation zum CoCo GitLab-Server sein. Sie sehen so aus: git@git.coco.study:students/foo/bar/exercises.git

Ein neues Verzeichnis wird für die lokale Kopie erstellt, benannt wie der Basisname des Repositorys (ohne .git-Erweiterung). Im obigen Beispiel würde das Verzeichnis exercises heißen.

Historie aufzeichnen: Commits erstellen

git status

Gibt eine Übersicht über geänderte Dateien und Dateien, die Git noch nicht kennt. Es listet auch die Dateien auf, die derzeit für das Erstellen eines Snapshots ausgewählt sind. (D.h.: Es listet die für einen Commit vorgemerkten Dateien auf, also diejenigen, die dem Index hinzugefügt wurden.)

git diff [Datei] [...]

Zeigt die Unterschiede der angegebenen Dateien zum letzten Commit an. Wenn keine Dateien angegeben sind, werden alle Änderungen angezeigt.

git diff --staged

Zeigt die Unterschiede an, die derzeit für das Erstellen eines Snapshots ausgewählt sind (vorgemerkt für einen Commit).

git add [Datei] [...]

Wählt geänderte Dateien für einen Commit aus. (D.h.: Fügt die Dateien dem Index hinzu, um sie für einen Commit vorzumerken.) Wenn die Datei zuvor Git unbekannt war, wird sie jetzt bekannt sein.

Achtung: Wenn du eine Datei für einen Commit mit git add auswählst und sie dann weiter änderst, musst du diese späteren Änderungen erneut mit git add hinzufügen!

git commit [-m 'Beschreibung deiner Änderung.']

Erstellt einen neuen Commit mit allen ausgewählten Dateien (indem git add verwendet wird).

git restore Datei [...]

Macht alle Änderungen an den angegebenen Dateien rückgängig. Danach werden die Dateien so sein, wie sie im letzten Commit waren.

Dies kann nicht rückgängig gemacht werden!

git restore --staged [Datei] [...]

Hebt die Auswahl der angegebenen Dateien auf. Danach sind sie nicht mehr für den nächsten Commit vorgemerkt.

Dies kann durch git add rückgängig gemacht werden.

Zusammenarbeiten: Remote-Repositorys

Um an einem Projekt zusammenzuarbeiten, ist der häufigste Weg, ein zentrales Repository zu haben (auf GitLab in unserem Fall) und jeder Teammitglied hat eine Kopie dieses Repositorys (siehe git clone). Teammitglieder tauschen ihre Codeänderungen aus, indem sie mit dem zentralen Repository synchronisieren.

git push

Lade deine Commits auf GitLab hoch. Dies funktioniert nur, wenn dein Repository mit GitLab verbunden ist, d.h. wenn du von dort geklont hast oder git remote add verwendet hast.

Wenn GitLab deine Commits ablehnt, hat höchstwahrscheinlich jemand anderes Commits vor dir hochgeladen. In diesem Fall verwende git pull.

git pull

Dies führt zwei Dinge aus:

  1. Änderungen, die von anderen gemacht wurden, werden heruntergeladen. (Siehe auch git fetch.)
  2. Die heruntergeladenen Änderungen werden mit deinen verbunden.

Es gibt mehrere Strategien für den zweiten Schritt: merge und rebase, in Git-Sprache, wobei merge der Standard ist. Beide können zu Konflikten führen, wenn du und jemand anderes dieselbe Datei bearbeitet haben.

git fetch

Lädt nur Änderungen herunter, die von anderen gemacht wurden.

git remote add origin Remote-Repository

Verbinde dein lokales Repository mit einem Remote-Repository. Du benötigst dies nur, wenn du zuerst das lokale Repository erstellt hast und jetzt GitLab verwenden möchtest.

Wie löse ich Konflikte auf

work in progress:

Wenn du einen Branch mit einem anderen Brnach mergen möchtest, kann es dabei zu Konflikten kommen, wenn es widersprüchliche Änderungen in den Branches gibt, welche also nicht zueinander passen. Diese Konflikte in Dateiversionen kannst du versuchen wie folgt aufzulösen:

  1. Git Status überprüfen:
    Zuerst musst du git status eingeben, um zu sehen, welche Dateien Konflikte haben. Ggf. macht dies deine Entwicklungsumgebung aber auch automatisch.
  2. Dateien mit Konflikten identifizieren:
    Git oder deine Entwicklungsumgebung zeigt dir die Dateien an, die Konflikte haben. Diese Dateien enthalten Markierungen, die die Konflikte anzeigen, zum Beispiel <<<<<<<, ======= und >>>>>>>.
  3. Dateien mit Konflikten öffnen:
    Öffne die nicht zueinander passenden Dateiversionen in einem Texteditor, bzw. wenn du in VS Code oder IntelliJ arbeitest, ist das Abhandeln der Fehler darin am einfachsten.
  4. Konflikte manuell auflösen:
    In den nicht zueinander passenden Dateiversionen siehst du Abschnitte, die mit <<<<<<<, ======= und >>>>>>> markiert sind. Diese Abschnitte zeigen den Konflikt zwischen den verschiedenen Versionen des Codes. Entscheide, welche Änderungen du behalten möchtest, und entferne die Markierungen.
  5. Dateien speichern:
    Nachdem du die Konflikte aufgelöst hast, speichere die Dateien.
  6. Git-Status überprüfen:
    Gib erneut git status ein, um sicherzustellen, dass alle Konflikte gelöst sind.
  7. Änderungen hinzufügen und commiten:
    Füge die geänderten Dateien mit git add hinzu und mache dann einen Commit mit git commit. Verwende eine aussagekräftige Commit-Nachricht, um zu erklären, welche Änderungen du vorgenommen hast.
  8. Pushen:
    Wenn du an einem gemeinsamen Projekt arbeitest, musst du deine Änderungen pushen, damit sie für andere verfügbar sind. Verwende dazu den Befehl git push.
Übersetzt mit ChatGPT (DeepL wollte an dem Tag nicht übersetzen) & angepasst durch einen Menschen