Git Tutorial Deutsch in der Shell. Grundlegende Anwendung der Git Befehle und Workflows um verschiedene Schritte wieder Rückgängig zu machen oder Konflikte zu beheben. Happy Coding!
Initialisieren eines neuen Git Repository’s
Prüft den Zustand aller Projektdateien
git status // Gibt den Zustand aller Dateien zurück
git status -s // Kompaktere Auflistung
Fügt Dateien zum Staging hinzu, welche für den nächsten Commit vorgesehen werden.
git add <Datei> // Setzt eine einzelne Datei auf Staging
git add . // Setzt den aktuellen Zustand aller Dateien auf Staging
git add --patch <Datei> // Einzelne Hunks auswählen
Erstellt eine neue Version aus den Dateien welche sich im Staging befinden
git commit -m "Nachricht" // Erstellt eine neue Version aus den Dateien im Staging
git commit -am "Nachricht" // Überspringt Staging, Neue Dateien werden ignoriert
Zeigt die letzten Commits an
git log // Zeigt die letzten Commits an
git log -n 3 // Zeigt die letzten 3
git log --graph // Commits mit Graphen
git log --oneline --decorate --graph --all
git reflog // Zeigt alle Referenzen an
Zeigt alle Unterschiede an zwischen Workspace und Lokales Repository
git diff // Unterschiede anzeigen lassen
git diff --staged // Für Dateien im Staging
Änderungen einer/mehreren Dateien und Commits Rückgängig machen
git reset // Holt alle Dateien aus Staging und behält alle Änderungen
git reset <Datei> // gleiches, nur auf angegebene Datei
Änderungen einer Datei Rückgängig machen
git restore --staged <Datei> // Holt eine Datei aus Staging und behält alle Änderungen.
git restore <Datei> // Setzt alle Änderungen einer Datei zurück
git restore --staged --patch <Datei> // Einzelne Hunks auswählen
git commit --amend
// Anschließend öffnet sich dein normaler Editor und
// du kannst eine neue Commit-Message eingeben
// Mach deine Änderung
git add . // oder füge einzelne Dateien hinzu
git commit --amend --no-edit
// Jetzt enthält dein letzter Commit auch die neuen Änderungen!
// WARNUNG: Niemals solltest du "--amend" bei einem
// Commit verwenden, der schon gepusht wurde (es sei denn
// du bist der einzige Entwickler in dem Repo)
git reset --soft HEAD~ // Macht den letzten Commit rückgängig, --> Staging
git reset HEAD~ // letzter Commit Rückgangig, --> Workspace
git reset --mixed HEAD~ // gleiches wie zuvor
git reset --hard HEAD~ // Löscht alle Änderungen des letzten Commits
// Finde den betreffenden Commit
git log
// Verwende die Pfeiltasten um in der History zu scrollen
// und kopiere dir den Hash des betreffenden Commits
git revert [betreffender hash]
// git erstellt einen neuen Commit, der den gewählten
// Commit rückgängig macht. Du musst dafür noch eine
// Commit-Message eingeben oder einfach abspeichern
// Finde den Hash eines Commits vor deinen Änderungen
git log
// Verwende die Pfeiltasten um in der History zu scrollen
// und kopiere dir den entsprechenden Hash
git checkout [gewählter hash] -- pfad/zur/datei
// Die alte Version ist jetzt wiederhergestellt
git commit -m "Änderungen an Datei XY Rückgängig gemacht"
Damit kannst du Dateien zurückholen, die du gelöscht hast, oder Dinge rückgängig machen, die dein Repo zerstört haben, oder einen nicht geglückten Merge oder einfach zu einem Stand zurückkehren, als bestimmte Dinge noch funktioniert haben
git reflog
// Du siehst eine Liste mit allem, was du in
// git getan hast, in allen Branches.
// Jeder Eintrag hat einen Index: HEAD@{index}
// Finde den Eintrag VOR demjenigen, der alles
// kaputt gemacht hat
git reset HEAD@{index}
// Alles ist jetzt wieder wie es vorher war
Anzeigen, Erstellen und Löschen von Branches
git branch <Name> // Erstellt einen neuen Branch
git branch -l // Listet alle Branches auf
git branch -d <Name> // Branch löschen
Erstellen und switchen von Branches
git checkout -b <Name> // Erstellen eines neuen Branches
git checkout <Name> // Wechseln in den angegeben Branch
Führt mehrere Entwicklungsstände zusammen
git merge <Branch> // Merged angegeben Branch in den aktuellen hinein
// Erstelle einen neuen Branch mit dem Stand des master
git branch neuer-branch-name
// Entferne den letzten Commit vom master
// und wechsel zum neuen Branch
git reset HEAD~ --hard
git checkout neuer-branch-name
// Dein Commit lebt jetzt in dem neuen Branch weiter :)
// Mach den letzten Commit rückgängig, aber erhalte die
// Änderungen
git reset HEAD~ --soft
git stash
// Navigiere zum richtigen Branch
git checkout name-des-richtigen-branch
git stash pop
git add . // oder füge einzelne Dateien hinzu
git commit -m "Deine Nachricht hier"
// Jetzt sind die Änderungen auf dem richtigen Branch
git checkout name-des-richtigen-branch
// Wähle den letzten Commit vom master
git cherry-pick master
// Und lösche den Commit vom master
git checkout master
git reset HEAD~ --hard
Mit Remote-Repositories arbeiten.
git remote add origin <URL> // fügt den remote origin hinzu
git remote // zeigt den aktuellen remote origin
git remote get-url origin // zeigt die Remote URL
git remote show origin // Zeigt alle Informationen zu einem Remote
git remote -v // Alle Remotes mit URL's anzeigen
git remote rename origin mario // Remote umbenennen
git remote remove <name> // entfernt den remote origin
Ein Remote-Repository lokal klonen/herunterladen. Gesamte git history von jeder Datei des Projektes wird heruntergeladen - .git Ordner initialisiert. Die aktuellste Arbeitskopie wird automatisch ausgecheckt. Somit kann auch ein Projekt welches Online beschädigt wird wiederhergestellt werden.
git clone <url> // klont das Remote-Repository
git clone <url> <verzeichnis> // Name des Projektverzeichnisses bestimmen
git clone <url> ./ // aktuelles Vereichnis verwenden
git remote -v // Schauen was drin steht nach dem klonen
git push // push mit default Werten
git push -u origin // pushed das lokale Repository ins remote. -u ist der upstream
Holt den Stand aus dem Online Repository
git fetch origin // Stand holen
git merge origin/master // merged den lokalen Stand mit dem neuen Stand
git rebase origin/master // Falls lokal Commits vorhanden sind
Holt den Online-Stand und merged ihn automatisch mit dem lokalen Stand
git pull origin // Holt den Online Stand
git pull origin <Branch> // Holt einen bestimmten Online Branch