git Kommandos für den Alltag

git kann mehr als ich mir merken kann. Daher hier ein paar Dinge, die ich für wichtig oder interessant halte:

((Work in progress – Ideen und Vorschläge erwünscht…))

Änderungen bei jedem git-Commit-Log anzeigen

git log --stat

Zeigt zu jedem commit neben Autor und Datum auch die geänderten Dateien mit einer groben Statistiken über die Anzahl der Änderungen.

lokales File aus Repo löschen aber lokal behalten

z.B. um sie in die .gitignore aufzunehmen

git rm --cached zuLöschendesFile

Repo URL anzeigen und ändern

Nur anzeigen:

git remote -v

Ändern:

git remote set-url origin https://blabla...

git history als bunter Graph

alias glg='git log --graph --pretty=format:"%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cd) %C(bold blue)<%an>%Creset" --abbrev-commit'
alias glga='glg --all'

Anzupassen mit git log --help und dann /placeholder

Arbeitsverzeichnis “aufräumen”

git clean -fdi

-> lokal aufräumen (remove untracked files etc.)
-i = interactive

git clean -fdx

-> -x = außerdem ignored-files aufräumen.
VORSICHT: löscht auch z.B. IntelliJ-Files.

Wenn man IntelliJ-Files aufheben will, dann besser excluden:

git clean -fdx -e '*.iml' -e '.idea'

Ehemals eingecheckte Dateien nun ignorieren

Als Beispiel ignorieren wir *.tmp-Dateien, welche – angenommen – fälschlich eingecheckt wurden.

  1. vi .gitignore -> *.tmp eintragen

  2. Dateien löschen (vereinfachtes Beispiel – nur im akt. Verzeichnis):

    git -C rm --cached *.tmp
    
  3. Den Löschvorgang einchecken (ein letztes Mal – nun werden sie ja ignoriert):
    git commit -m "delete accidently commited tmp-files"
    git push
    

git diff zeichenweise (wortweise)

Zeigt auch Unterscheide innerhalb einer Zeile an. Dann sieht man schneller, was man geändert hat, wenn es nur weniger Zeichen oder Wörte innerhalb einer längeren Zeile waren:

git diff --word-diff=plain  --word-diff-regex=.