Git Tipps

Aus revampedia

Grundprinzip

Eine veränderte oder neue Datei kann sich in 3 Zuständen befinden:

  • modified (verändert) bzw. neu erstellt
  • staged (für Commit vorbereitet)
  • committed (Commit ausgeführt, gesichert)

Einstellungen

vim als Editor für Git einstellen:
git config --global diff.tool vimdiff

Bestätigung beim Editieren jeder Datei ausschalten:
git config --global difftool.prompt false

Alias d für difftool setzen:
git config --global alias.d difftool

Anschliessend können mit folgenden Befehlen zwei Fenster geöffnet werden zum Vergleich der Änderungen:

git d [Dateiname] (Änderungen, die noch nicht in der Staging Area sind anzeigen)

git d --cached [Dateiname] (Änderungen in der Staging Area anzeigen)

Commits vorbereiten

  • git add [Dateiname] Datei "Dateiname" in Staging Area übernehmen
  • git reset [Dateiname] Datei "Dateiname" aus Staging Area entfernen, aber als veränderte Datei behalten (Umkehrung von git add)
  • git rm [Dateiname] ...Erklärung fehlt noch...

Änderungen, die nicht committed werden sollen, sichern, bevor z.B. auf einen anderen branch gewechselt werden kann:

  • git stash alle Änderungen sichern und verstecken
  • git stash show die versteckten gesicherten Änderungen anzeigen
  • git stash pop die versteckten gesicherten Änderungen zurückholen und die Sicherung löschen
  • git stash apply die versteckten gesicherten Änderungen zurückholen und die Sicherung behalten

Commits aufspalten und neu zusammensetzen

ACHTUNG: NIE in einer produktiven Version durchführen!

  • Mit 'git log' oder tig (siehe unten) den HASH des Commits herausfinden
  • git rebase -i HASH^ (wichtig das ^ nach dem HASH einfügen, da damit der Commit vorher ausgewählt wird)
  • im neuen Fenster bei dem Commit, der geändert werden soll 'pick' durch 'edit' ersetzen und abspeichern
  • git reset HEAD^

Wenn etwas beim rebase schief läuft:
git rebase --abort

Weitere Werkzeuge

tig

Alternative zu git log
Beispiele:

  • tig: zeigt zeilenweise die letzten Commits an
  • tig branchname: zeigt die letzten Commits von Branch branchname
  • Enter-Taste: Öffnet den gerade ausgewählten Commit in einem Fenster unterhalb
  • /muster: sucht in allen Commits nach "muster" → Taste n für weitersuchen
  • C: cherry-pick falls anderer Branch geöffnet ist