Obwohl ich täglich mit Git arbeite, gibt es immer wieder neue Dinge die man lernen kann. Weil sich die ganzen Befehle kein Mensch merken kann (naja, zumindest ich nicht), habe ich hier mal die für mich wichtigsten Befehle zusammen geschrieben.

Generelle Konfiguration

Beschreibung Befehl Bemerkung
Git-Benutzer setzen git config --global user.name “MeinName”
und E-Mail Adresse setzen git config --global user.email “mail@example.com
Konfiguration auslesen git config --global --list
Git merge setzen git config pull.rebase false Verhalten von git pull auf “merge” setzen (statt rebase). Nur für aktuelles Repo.

Repositories klonen

Beschreibung Befehl Bemerkung
Repository klonen git clone <Repo-URL>
Repository klonen git clone -c http.sslverify=false <Repo-URL> Keine Zertifikats-Prüfung durchführen
Aus bestimmtem Branch klonen git clone -b newFeature <Repo-URL>
In einen bestimmten Commit wechseln git checkout <Commit ID>
Aus einem bestimmten Branch pullen git pull origin <Branch-Name>

Mit Änderungen arbeiten/Commits

Beschreibung Befehl Bemerkung
Einzelne geänderte Datei der Stage hinzufügen git add <DATEI>
Alle neuen/geänderten/gelöschten Dateien der Stage hinzufügen git add .
Dateien commiten git commit -m “Meine Änderungen”
Dateien in Stage hinzufügen und direkt commiten git commit -am “Meine Änderungen” Fügt automatisch alle Dateien dem Stage hinzu
Nachricht des letzten Commits korrigieren git commit --amend -m “Meine korrigierter Commit”
Dateien pushen git push Änderungen nach Origin (ins Remote Repo) pushen
Änderungen lokal herunterladen git fetch, danach git merge fetch = Noch nicht in die lokalen Änderungen einfließen lassen
Änderungen lokal herunterladen git pull
Den Commit für eine bestimmte Datei zurücknehmen git restore --staged DATEI
Den Commit für alle Dateien zurücknehmen git restore --staged .
Alle Änderungen an lokalen Dateien verwerfen und neu pullen git reset --hard HEAD, (OPTIONAL) git clean -f -d, git pull
Eine Datei als Ausführbar markieren git update-index --chmod=+x pfad/zur/datei

Infos auslesen

Beschreibung Befehl Bemerkung
Git-URL und Branches anzeigen git remote show origin
Verwendetes Protokoll/URL anzeigen (HTTPS/SSH) git remote -v
Zeige Änderungen zum Working Dir und aktuellen Commit git diff
Zeige Änderungen von Dateien die im Stage liegen git diff --staged Nur Dateien beachten die mit git add dem Stage hinzugefügt wurden
Zeige Änderungen die noch nicht zum Commit vorgemerkt sind git status
Auf welchen Commit zeigt die HEAD-Referenz momentan? git rev-parse HEAD Zeigt den Verweis auf den entspr. Commit
Alle gelöschten Dateien anzeigen git log --diff-filter=D --name-only
Codezeilen-Änderungen und entspr. Person anzeigen git blame [-L 10,12] subfolder/myfile.tf -L = Zu suchende Zeilen eingrenzen
Aktuelle und vergangene Commits anzeigen git log [--oneline] --oneline = Nur commit IDs und Nachricht anzeigen
Zeige Commit History und deren Änderungen (Patches) git log -p [-2] -2 = Zeige nur Änderungen der letzten 2 Commits
Zeige aktuellen Commit an, in dem man sich befindet git show -s [--oneline]
Alle lokalen Branchess und den aktuell Genutzten anzeigen git branch -a
Zeige alle remote Branches git branch -r
Zeige Dateien im LFS an git lfs ls-files

Submodule

Beschreibung Befehl Bemerkung
Submodul in bestehendes Repo hinzufügen git submodule add --branch main git@example.com:pfad/zum/repo/repo.git ./ordner
Git clone eines Repos inkl. Submodule git clone --recursive git@example.com:pfad/zum/repo/repo.git
Git pull inkl. Submodul git pull --recurse-submodules
Neueste Version (Commit) des Submoduls pullen git submodule update --remote
Welcher Commit wird vom Submodul momentan verwendet? git submodule status
Submodul entfernen git rm global_config

Mit Konflikten arbeiten

Beschreibung Befehl Bemerkung
Zeige Dateien mit Konflikten, inkl. betr. Zeilen git diff --check

Konflikt lösen

Du änderst etwas an einer lokalen Datei (z.B. in main), aber in derselben Datei gibt es Änderungen die bereits jemadn gemacht hat, und die in Konflikt mit deiner Änderung stehen. So kannst du den Konflikt lösen:

git commit -am "Meine lokale Änderung"

git push

Eine Fehlermeldung wird erscheinen:

 ! [rejected]        main -> main (fetch first)
Fehler: Fehler beim Versenden einiger Referenzen nach 'git.example.com:tests/test.git'
Hinweis: Aktualisierungen wurden zurückgewiesen, weil das Remote-Repository Commits enthält,
Hinweis: die lokal nicht vorhanden sind. Das wird üblicherweise durch einen "push" von
Hinweis: Commits auf dieselbe Referenz von einem anderen Repository aus verursacht.
Hinweis: Wenn Sie die externen Änderungen integrieren wollen, verwenden Sie 'git pull'
Hinweis: bevor Sie erneut push ausführen.
Hinweis: Siehe auch den Abschnitt 'Note about fast-forwards' in 'git push --help' für
Hinweis: weitere Informationen.

git pull --rebase

Löse nun den Konflikt in der Datei und speichere sie

git add .

git rebase --continue

Der Editor für den Commit erscheint. Prüfe die Commit-Nachricht und passe sie bei Bedarf an. Speichere dann mit :x

git push

  • Nun sollte die Änderung im Remote Repo sichtbar sien.

Branches

Branch erstellen

Neuen lokalen Branch erstellen

git checkout -b newFeature

Branch zum Origin pushen

git push origin newFeature

Danach sollte der neue Branch in der Git-Oberfläche sichtbar sein

Branch remote hochladen

git remote add newFeature \<Repo-URL>

Den neuen Branch als Upstream Branch setzen

git push --set-upstream origin newFeature

In den neuen Branch wechseln

git checkout newFeature

Jetzt kann ganz normal commited/gepushed werden

Branch mergen

Den neuen Branch in den main-Branch übernehmen (mergen)

git checkout main

git merge newFeature

git push

Den Branch anschließend lokal löschen

git branch -d newFeature

Den Branch remote löschen auf dem GIT-Server

git push origin -d newFeature

Einen Branch löschen (lokal+remote)

Erst in den Main-Branch wechseln:

git checkout main

git branch -d newFeature

git push origin --delete newFeature

Repo-Anpassungen

Lokales Repo von HTTPS auf SSH umstellen (oder anders herum)

git remote set-url origin \<Repo-URL>

Repository wurde umgezogen - URL anpassen im lokalen Repo

git remote remove origin

git remote add origin git@git.example.com:/<Path>/<Repository>.git

git push --set-upstream origin --all

Eine Commit Message anpassen

Szenario: Du hast mehrere Commits erstellt die noch nicht gepushed sind. Jetzt möchtest du von einem dieser Commits die Commit Nachricht ändern, weil z.B ein Schreibfehler drin ist.

Die letzten Commits anzeigen:

git log [-5]

Nun (ganz wichtig!): Nicht den Hash von dem Commit kopieren den wir ändern möchten, sondern von dem der eins davor gemacht wurde.

git rebase -i 0023cddd

Der Editor öffnet sich, dort steht nun

pick 456e66 #Meine Commit-Meldung

Das “pick” gegen “reword” ersetzen

mit :x speichern

Nun die Commit-Nachricht entspr. anpassen

Mit :x speichern

Kontrollieren mit git log [-5]

.gitignore-Beispiele

build/
.*
.*tmp
password
.env
.py[cd]