172 lines
4.6 KiB
Markdown
172 lines
4.6 KiB
Markdown
# Git Cheatsheet
|
|
|
|
## Login / Authentifizieren
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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>
|
|
```
|
|
|
|
## Branches
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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>
|
|
```
|
|
|