#https://marklodato.github.io/visual-git-guide/index-de.html # --------- simple workflow ---------- # bares Repo anlegen (= ohne Arbeitsverzeichnis, für Server) git init --bare serverrepo.git # lokalen Klon anlegen git clone serverrepo.git/ clientrepo # Dateien aus dem Arbeitsverzeichnis in den Index (Stage) kopieren git add --all # Dateien aus dem Index ins Repo kopieren git commit -m "Beschreibung" # Änderungen vom Server holen git pull # Änderungen auf den Server schieben # beim ersten Push bei "bare repos" upstream setzen git push --set-upstream origin master # später nur noch git push # --------- status, diff, log, reflog ---------- # Veränderte und ungetrackte Dateien anzeigen git status -u # Diff zwischen Arbeitsverzeichnis und Stage git diff # Diff zwischen Stage und Repo git diff --staged # Diff zwischen Arbeitsverzeichnis und Repo git diff HEAD # log anzeigen (HEAD, dessen Vorgänger, uswusf.) git log # reflog anzeigen (lokale Historie) git reflog # --------- Zwischenspeicherstapel (stash) ---------- # Arbeitsverzeichnis (veränderte +ungetrackte Dateien) und Index oben auf den Stapel legen und auf HEAD zurücksetzen git stash --all # Stapeleinträge auflisten git stash list # obersten Zwischenspeicherstapeleintrag ins Arbeitsverzeichnis und Index zurückschreiben git stash pop # --------- komplexe Operationen ---------- Arbeitsverzeichnis Stage/Index Repo | | | # veränderte, aber schon getrackte Files des Arbeitsverzeichnisses in den Index und ins Repo kopieren git commit -a -m "Beschreibung" | | | src-------------------->dst-------------------->dst # nur Stage zurücksetzen auf Stand des Repos (Repo in den Index kopieren) git reset | | | keep dst<--------------------src # nur Arbeitsverzeichnis auf Stand der Stage zurücksetzen (Index ins Arbeitsverzeichnis kopieren) git checkout -- . | | | dst<--------------------src keep # Arbeitsverzeichnis und Stage zurücksetzen auf Stand des Repos git checkout -f | | | dst<--------------------dst<--------------------src # Dateien/Verzeichnisse im Arbeitsverzeichnis löschen, welche nicht in der Stage sind git clean -f -d | | | dst<--------------------src keep # --------- branching ---------- # alle Zweige anzeigen git branch --list --all # neuen lokalen Zweig erzeugen und in diesen wechseln git checkout -b newbranchname # Zweig zusammenführen # in Zielzweig wechseln git checkout master # anderen Branch in Zielbranch mergen git merge newbranchname # --------- Extras ---------- # gesamten (lokalen) DAG anzeigen git log --all --oneline --decorate --graph git log --reflog --oneline --decorate --graph # wenn der Upstream-Branch entfernt wurde git push -u origin master # --------- Mergetool ---------- git config --global merge.tool kdiff3 git config --global mergetool.keepBackup false # todo Windows # todo kdiff3 keeps orig # after conflict git mergetool # editieren # ctrl+s # alt+f4 git commit -m "mergekonflikt" # --------- Workflows ---------- # Centralized Workflow # https://www.atlassian.com/de/git/tutorials/comparing-workflows # Git Feature Branch Workflow # https://www.atlassian.com/git/tutorials/comparing-workflows/feature-branch-workflow # Gitflow Workflow # https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow # Forking Workflow # https://www.atlassian.com/git/tutorials/comparing-workflows/forking-workflow