Git/Extras/Cheat_Sheet.md

4.6 KiB

Git Cheatsheet

Login / Authentifizieren

# Git-User-Info lokal setzen (für Commits)
git config --global user.name "Dein Name"
git config --global user.email "deine@email.de"

Create & Clone

# Aktuellen Ordner in eine Repository verwandeln
git init

# Repository von einem Link klonen
git clone <link>

# Repository von einem Link zu einem bestimmten Pfad klonen
git clone <link> <ziel_pfad>

Add & Remove

# Einzelne Datei tracken & stagen 
git add <datei_pfad>

# Alle geänderte Dateien tracken & stagen
git add .

# Datei aus dem Arbeitsverzeichnis entfernen
git rm <datei_pfad>

Commit & Synchronize

# Commit erstellen
git commit -m "fix: Quick hotfix"

# Commit erstellen und bereits getrackten dateien stagen
git commit -am "fix: Quick hotfix"

# Alle lokalen Commits pushen
git push

# Alle lokalen Commits zu einer bestimmten branch pushen
git push origin <branch_name>

# Alle lokalen Commits zu einer neuen remote pushen
git remote add upstream <repo_link>
git push -u upstream main

Zu einem alten Commit zurückkehren

# 1. Zuerst die Commit-Historie anzeigen, um den Hash des gewünschten Commits zu finden
git log  # zeigt die letzten Commits an, inklusive deren Hashs (zufällige Zeichenfolge)

# Setze den Branch auf den gewünschten Commit zurück
git reset --hard <hash>

# Dannach pushen
git push --force

Branches

# Aktuellen Branch anzeigen
git branch

# Neuen Branch erstellen (aber nicht wechseln)
git branch <branch_name>

# Neuen Branch erstellen UND direkt wechseln
git checkout -b <branch_name>

# Zu bestehendem Branch wechseln
git checkout <branch_name>

# Branch löschen
git branch -d <branch_name>         # nur wenn schon gemerged
git branch -D <branch_name>         # erzwingen

# Alle lokalen Branches anzeigen
git branch

# Remote-Branches anzeigen
git branch -r

# Alle Branches (lokal + remote)
git branch -a

# Lokalen Branch auf Remote pushen
git push -u origin <branch_name>

Mergen

# Aktuellen Status des Repositories anzeigen
git status

# Zu dem Branch wechseln, in den du mergen willst (z.B. main)
git checkout <branch_name>

# Mergen eines anderen Branches (z.B. feature-branch) in den aktuellen Branch
git merge <feature_branch>

# Merge rückgängig machen, falls du den Merge noch nicht committet hast
git merge --abort

# Den Merge-Commit durch einen "Squash" zusammenfassen (optional)
git merge --squash <feature_branch>      # fasst alle Commits des Branches in einen zusammen
git commit                               # Commit erstellen

Merge Konflikte lösen

# 1. Git meldet einen Konflikt, falls es welche gibt
git status  # zeigt an, welche Dateien Konflikte haben

# 2. Öffne die betroffenen Dateien, um die Konflikte zu lösen
# Konflikte werden in der Datei markiert:
# >>>>>>> HEAD und ======= trennen die Versionen
# Lösche die Marker und entscheide, welche Version du behalten möchtest

# 3. Nachdem du die Konflikte manuell behoben hast, markiere die Dateien als gelöst
git add <datei_mit_konflikt>  # fügt die gelösten Dateien zum Staging-Bereich hinzu

# 4. Nachdem alle Konflikte gelöst sind, beende den Merge-Prozess
git commit  # Commit für den Merge erstellen (Git wird eine Standard-Merge-Nachricht vorschlagen)

# 5. Falls du den Merge abbrechen möchtest, z.B. wenn du die Konflikte nicht lösen kannst
git merge --abort  # Rückgängig machen und zum vorherigen Zustand zurückkehren (nur während eines unvollständigen Merges)

# 6. Falls du den Merge nach Konfliktlösung fortsetzen willst (wenn z.B. der Merge in einem "Squash"-Commit abgeschlossen wurde)
git merge --continue  # Fortsetzen des Merges (normalerweise nur nach einem Rebase oder Squash, der den Merge unterbricht)

Tagging

# Alle bestehenden Tags anzeigen
git tag

# Einen neuen Tag erstellen (z.B. v1.0.0)
git tag <tag_name>

# Einen Tag mit einer Nachricht versehen
git tag -a <tag_name> -m "Tag Nachricht"

# Einen Tag zu einem bestimmten Commit erstellen (z.B. nach Commit ID)
git tag <tag_name> <commit_hash>

# Einen Tag auf einem Remote-Repository veröffentlichen
git push origin <tag_name>

# Alle Tags auf das Remote-Repository pushen
git push --tags

# Einen Tag löschen (lokal)
git tag -d <tag_name>

# Einen Tag löschen (remote)
git push --delete origin <tag_name>

# Einen Tag auf einen bestimmten Commit verschieben (z.B. nach Commit ID)
git tag -f <tag_name> <commit_hash>

# Einen Tag auschecken, um zu diesem Punkt im Repository zu gehen
git checkout <tag_name>

# Einen Tag mit einer Nachricht bearbeiten (falls nicht noch gepusht)
git tag -a <tag_name> -m "Neue Nachricht" <commit_hash>