init
git init
- Initialisiert ein neues lokales Repository
- Hierbei wird auch ein .git Ordner erzeugt
- Hauptentwicklungszweig 'master' wird erstellt
add
git add README.txt
- Gibt an, dass die Datei 'README.txt' versioniert werden sollen
- Kopiert die Dateien aus dem Arbeitsverzeichnis in den Index (Staged area)
- Damit ist die Datei noch nicht Teil des lokalen Repositories
status
git status
- Zeigt den Status der Dateien im Git-Verzeichnis
- Welche Dateien sind im Arbeitsbereich, aber nicht Teil des Index
- Welche Dateien wurden zum Index hinzugefügt
- Welche Dateien unterscheiden sich im Index und dem Arbeitsbereich
status -s
git status -s
- Zeigt den Status vereinfacht an
commit
git commit -m 'initial project version'
- Übergibt die Dateien aus dem Index mit einem Kommentar an das lokale Repo
git commit -am 'updated some files'
- Übergibt die geänderten Dateien in den Index und anschließend an das lokale Repo
- Wird gerne bei Aktualisierungen verwendet
branch
git branch
git branch develop
- Erstellt den Branch 'develop'
git branch -D feature-x
- Löscht den Branch 'feature-x'
checkout
git checkout develop
- Der Branch 'develop' wird aus dem lokalen Repository in den Arbeitsbereich überführt
- Mit diesem Befehl ist das Wechseln zwischen lokalen Branches möglich
reset
git reset README.txt
- Entfernt den Eintrag für README.txt aus dem Index
- Mit 'git reset HEAD' können alle Änderungen seit dem letzten Commit aus
dem Index genommen werden
rm
git rm README.txt --cached
- Entfernt die Datei README.txt aus dem Index
- Mit dem Zusatz --cached wird die Datei nur aus dem Index entfernt,
nicht aus dem Arbeitsbereich
- Mit dem Zusatz -f wird die Datei aus dem Index und dem Arbeitsbereich
entfernt
diff
git diff
- Zeigt auf welche Datei sich geändert hat, aber noch nicht gestaged (git add) wurde
git diff --cached
- Zeigt Änderungen der gestagten Dateien
log
git log
- Liefert eine Übersicht über die letzten Commits bis zu dem aktuellen Commit
git log master
- Liefert eine Übersicht über die letzten Commits des Branches 'master'
git log develop ^master
- Liefert eine Übersicht über die letzten Commits des Branches 'develop' ohne den Logs des Branches 'master'
merge
git merge feature-x
- Führt die Änderungen des Branches 'feature-x' in den aktuellen Branch
- Das Merging in Git ist sehr mächtig und bewältigt die meisten Merge-Konflikte selber
Merge-Konflikte manuell lösen
- Konflikte müssen immer manuell aufgelöst werden, wenn die gleichen Zeilen geändert wurden
- Empfehlung:
- Nutze ein GUI-Tool für Merge-Konflikte
- Besprecht Konflikte mit zuständigen Entwicklern
clone
git clone ssh://<user>@<url>:<port>/<path>/<Repo-Name>.git
- Mit dem Ausführen des Befehls wird
- ein Verzeichnis '<Repo-Name>' erstellt,
- das .git Verzeichnis darin initialisiert,
- die Daten des Repositories hinein kopiert,
- und anschließend wird ein Checkout des Branches 'master' gemacht
- Statt ssh können Remote Repositories auch git://, http:// oder https:// anbieten
Zugriff auf Remote-Repositories
- Wenn mit einem Remote-Repository gearbeitet wird, ist in der Regel eine Authentifizierung notwendig:
- Nutzername/Passwort
- SSH-Keys
- Für Github:
- Settings → SSH-Keys
- Settings → Personal access tokens
fetch
git fetch
- Holt alle Informationen vom Remote Repository über Branches und Versionen
pull
git pull origin develop
Führt 'fetch' aus und anschließend ein automatisches 'merge' des Remote-Branches 'develop'
in den aktuellen Branch
push
git push
- Gibt die lokalen Änderungen (Sammlung der lokalen Commits) des aktuellen Branches
an den entsprechenden Branch des Remote Repository
Weitere Befehle
- git remote: Auflistung/Hinzufügen/Entfernen von Remote Repositories
- git tag: Markiert den ausgewählten Commit
- git revert: Entfernt einen Commit aus dem Repository
- git rebase: Merged den angegebenen Branch in den Branch von dem er abgezweigt wurde
- git stash: Legt nicht committete Änderungen beiseite, um einen sauberen Arbeitsbereich zu schaffen