Git Cheat Sheet erspart Ihnen das Auswendiglernen aller Befehle.
Fühlen Sie sich frei, einen Beitrag zu leisten, aktualisieren Sie Grammatikfehler. Sie können auch Ihre eigene Sprachdatei hinzufügen.
- Installation
- Konfigurationsdateien
- Erstellen
- Lokale Änderungen
- Suche
- Commit Historie
- Zweige & Tags
- Aktualisieren & Veröffentlichen
- Zusammenführen & Zurücksetzen
- Rückgängig machen
- Git Flow
$ git config --list
$ git config --local --list
$ git config --global --list
$ git config --system --list
Lege einen Namen fest, mit dem Sie beim Überprüfen des Versionsverlaufs identifiziert werden können:
$ git config --global user.name "[Vorname Nachname]"
$ git config --global user.email "[gültige-email]"
$ git config --global color.ui auto
$ git config --global core.editor vi
<repo>/.git/config
~/.gitconfig
/etc/gitconfig
Es gibt 2 Wege:
Via SSH
$ git clone ssh://benutzer@domain.com/repo.git
Via HTTP
$ git clone http://domain.com/benutzer/repo.git
$ git init
$ git init <Verzeichnis>
$ git status
$ git diff
$ git diff <Datei>
$ git add .
$ git add -p <Datei>
$ git add <Dateiname1> <Dateiname2>
$ git commit -a
$ git commit
$ git commit -m 'Nachricht hier'
$ git commit -am 'Nachricht hier'
$ git commit --date="`date --date='n day ago'`" -am "<Commit Nachricht hier>"
Ändere keine veröffentlichten Commits!
$ git commit -a --amend
Ändere keine veröffentlichten Commits!
$ git commit --amend --no-edit
GIT_COMMITTER_DATE="date" git commit --amend
$ git commit --amend --date="date"
$ git stash
$ git checkout Zweig2
$ git stash pop
$ git stash apply
- {stash_nummer} kann bezogen werden von
git stash list
$ git stash apply stash@{stash_nummer}
$ git stash drop
$ git grep "Hallo"
$ git grep "Hello" v2.5
$ git log -S 'Schlüsselwort'
Commits anzeigen, die ein bestimmtes Schlüsselwort eingeführt haben (mit Hilfe eines regulären Ausdrucks)
$ git log -S 'Schlüsselwort' --pickaxe-regex
Alle Commits anzeigen, beginnend mit dem neuesten (es werden Hash, Autoreninformationen, Datum des Commit und Titel des Commits angezeigt):
$ git log
$ git log --oneline
$ git log --author="Benutzername"
$ git log -p <Datei>
$ git log --oneline <origin/master>..<remote/master> --left-right
$ git blame <Datei>
$ git reflog show
$ git reflog delete
Index.txt umbenennen zu Index.html
$ git mv Index.txt Index.html
$ git branch
$ git branch -a
$ git branch -r
$ git checkout <Zweig>
$ git checkout <Zweig> -- <Datei>
$ git checkout -b <Zweig>
$ git checkout -
$ git checkout -b <Neuer_Zweig> <Existierender_Zweig>
$ git checkout <commit-hash> -b <Neuer_Zweig_Name>
$ git branch <Neuer_Zweig>
$ git branch --track <Neuer_Zweig> <Entfernter_Zweig>
$ git branch -d <Zweig>
$ git branch -m <Neuer_Zweig_Name>
Nicht zusammengeführte Änderungen gehen verloren!
$ git branch -D <Zweig>
$ git tag <Tag-Name>
$ git tag -a <Tag-Name>
$ git tag <Tag-Name> -am 'Nachricht hier'
$ git tag
Alle Tags mit ihren Nachrichten auflisten (Tag-Nachricht oder Commit-Nachricht, wenn Tag keine Nachricht hat):
$ git tag -n
$ git remote -v
$ git remote show <remote-Repository>
$ git remote add <remote-Repository> <url>
$ git remote rename <remote-Repository> <neues-remote-Repository>
$ git remote rm <remote-Repository>
Hinweis: git remote rm löscht das entfernte Repository nicht vom Server. Es entfernt einfach das Repository und dessen Referenzen aus Ihrem lokalen Repository.
$ git fetch <remote-Repository>
$ git remote pull <remote-Repository> <url>
$ git pull origin master
$ git pull --rebase <remote-Repository> <Zweig>
$ git push <remote-Repository> <Zweig>
$ git push <remote-Repository> :<Zweig> (since Git v1.5.0)
ODER
$ git push <remote-Repository> --delete <Zweig> (since Git v1.7.0)
$ git push --tags
$ git config --global merge.tool meld
$ git mergetool
$ git merge <Zweig>
$ git branch --merged
Setze keine veröffentlichten Zweige zurück!
$ git rebase <Zweig>
$ git rebase --abort
$ git rebase --continue
Verwende einen Editor, um Konflikte manuell zu lösen und (nach der Lösung) die Datei als gelöst zu markieren:
$ git add <gelöste-Datei>
$ git rm <gelöste-Datei>
$ git rebase -i <commit-direkt-vor-dem-ersten>
Ändere,
pick <commit_id>
pick <commit_id2>
pick <commit_id3>
zu,
pick <commit_id>
squash <commit_id2>
squash <commit_id3>
$ git reset --hard HEAD
$ git reset HEAD
$ git checkout HEAD <Datei>
Einen Commit rückgängig machen (indem ein neuer Commit mit gegensätzlichen Änderungen erstellt wird):
$ git revert <commit>
$ git reset --hard <commit>
$ git reset --hard <remote-Repository/Zweig> z.B., upstream/master, origin/my-feature
Setze HEAD-Zeiger auf einen früheren Commit zurück und behalte alle Änderungen als nicht bereitgestellte Änderungen bei:
$ git reset <commit>
Setze HEAD-Zeiger auf einen früheren Commit zurück und behalte nicht committete lokale Änderungen bei:
$ git reset --keep <commit>
$ git rm -r --cached .
$ git add .
$ git commit -m "Entferne Datei xyz"
Verbessert Git-flow
Voraussetzung ist eine funktionierende Git-Installation. Git-Flow funktioniert unter OSX, Linux und Windows.
$ brew install git-flow-avh
$ port install git-flow
$ sudo apt-get install git-flow
$ wget -q -O - --no-check-certificate https://raw.githubusercontent.com/petervanderdoes/gitflow/develop/contrib/gitflow-installer.sh install <state> | bash
Git-Flow muss initialisiert werden, um Ihr Projekt-Setup anzupassen. Beginnen Sie mit der Verwendung von Git-Flow, indem Sie es in einem vorhandenen Git-Repository initialisieren:
Sie müssen einige Fragen zu den Namenskonventionen für Ihre Zweige beantworten. Es wird empfohlen, die Standardwerte zu verwenden.
git flow init
ODER
git flow init -d
Entwickeln Sie neue Funktionen für kommende Versionen. Existieren normalerweise nur in Entwickler-Repositorys.
git flow feature start MEINEFUNKTION
git flow feature finish MEINEFUNKTION
Entwickeln Sie eine Funktion in Zusammenarbeit? Veröffentlichen Sie eine Funktion auf dem Remote-Server, damit sie von anderen Benutzern verwendet werden kann.
git flow feature publish MEINEFUNKTION
git flow feature pull origin MEINEFUNKTION
git flow feature track MEINEFUNKTION
Unterstützen Sie die Vorbereitung einer neuen Produktionsversion. Lassen Sie kleinere Fehlerkorrekturen zu und bereiten Sie Metadaten für eine Veröffentlichung vor.
Um ein Release zu starten, verwenden Sie den Befehl git flow release. Er erstellt einen Release-Zweig, der aus dem 'develop'-Zweig erstellt wird. Sie können optional einen [BASE] Commit sha-1 Hash angeben, von dem aus die Veröffentlichung gestartet werden soll. Der Commit muss sich im Zweig „develop“ befinden.
git flow release start RELEASE [BASE]
Es ist ratsam, den Release-Zweig nach seiner Erstellung zu veröffentlichen, um Release-Commits durch andere Entwickler zu ermöglichen. Machen Sie es ähnlich wie beim Veröffentlichen von Funktionen mit dem Befehl:
git flow release publish RELEASE
Das Fertigstellen eines Release ist einer der großen Schritte beim Git-Branching. Er führt mehrere Aktionen aus:
git flow release finish RELEASE
Hotfixes entstehen aus der Notwendigkeit, sofort auf einen unerwünschten Zustand einer Live-Produktionsversion zu reagieren. Kann von dem entsprechenden Tag auf dem Master-Zweig abgezweigt werden, der die Produktionsversion markiert.
$ git flow hotfix start VERSION [BASENAME]
Das Versionsargument markiert dabei den neuen Hotfix-Release-Namen. Optional können Sie einen Basisnamen angeben, von dem aus gestartet werden soll.
Durch das Fertigstellen eines Hotfixes wird er wieder in Develop und Master zusammengeführt. Zusätzlich ist der Master-Merge mit der Hotfix-Version gekennzeichnet
git flow hotfix finish VERSION