Meine git aliases

Mit git aliases bietet die Versionsverwaltung git eine Möglichkeit an, individuelle git-Kommandos anzulegen oder bestehende Kommandos mitsamt deren Optionen in einen handlichen Befehl zu verpacken.
Am einfachsten legt man Aliase an, in dem man die Datei .gitconfig im eigenen home-Verzeichnis bearbeitet. Dort gibt es einen Abschnitt [alias], unter dem die Aliase eingetragen werden.
Hier meine Liste aus der .gitconfig; Bitte beachte: Einige dieser Aliase funktionieren so nur in einer Linux-Umgebung. Verwendest du Windows, musst du manches anpassen oder auf einiges verzichten. Falls du diese Aliase kopieren willst beachte bitte, dass ich die Nummerierung selbst hinzugefügt habe. Sie gehört nicht zur Liste dazu!

1. security-check = !/usr/local/bin/security-checker.phar security:check composer.lock
2. cmp = !git checkout master && git pull && make init && git security-check
3. new = "!f(){ git cmp && git checkout -b \"$@\"; }; f"
4. ls = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --no-merges
5. ll = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --numstat --no-merges
6. filelog = log -u
7. last = checkout -
8. purge-local-branches = !git cmp && git branch --merged | grep -vE 'master|\\*' | xargs -n 1 git branch -d
9. amend = commit -a --amend
0. force-push = "!f(){ git push -u origin \"$(git rev-parse --abbrev-ref HEAD)\" -f; }; f"

security-check

Dieser Alias ruft den security-checker von Sensiolabs auf und führt ihn aus. Der security-checker prüft deine composer.lock-Datei darauf, ob eventuell bekannte Sicherheitslücken in den installierten Paketen vorhanden sind. Wenn man viel mit externen Abhängigkeiten über Composer arbeitet, ist dies ein sehr sinnvolles Tool. Nachdem du den security-checker heruntergeladen hast musst du natürlich noch den Pfad im Alias anpassen.

cmp

Dieser Alias ist eine Abkürzung für „checkout master und pulle“; Heute kann der Alias aber noch mehr. Zuerst checkt er den aktuellen master aus, danach wird gepullt, um den aktuellsten Stand zu haben. Danach wird ein in dem Repository vorhandenes Make-Script ausgeführt (dessen Hauptaufgabe ist bei mir composer install) und zum Abschluss wird der zuvor definierte Security-Check ausgeführt.

new

Dieser Alias legt einen neuen Branch an. Der Aufruf ist dann einfach git new BRANCHNAME. Dabei wird zunächst der Alias cmp ausgeführt, um einen neuen Branch auch immer vom aktuellsten Master ausgehend anzulegen.

ls

Abgeleitet vom entsprechenden Linux-Befehl zeigt mir git ls eine übersichtliche Liste über git log.

ll

Ähnlich wie ls, nur etwas umfangreicher ist die Ausgabe von git ll.

filelog

Zeigt das übliche git log an, jedoch mit allen Änderungen zu den jeweiligen Logeinträgen

last

Mit git last wechsle ich in den zuletzt ausgecheckten Branch.

purge-local-branches

Der Alias purge-local-branches hilft mir, meine lokale Arbeitskopie sauber zu halten. Zunächst wechselt git in den Master, dann werden alle in diesen Branch gemergten lokalen branches ausgelesen, diese Liste wird mit grep durchsucht und alles, was *nicht* master oder einen * enthält wird nach xargs geschickt, was dann wiederum diesen Branch lokal löscht. Dieser Alias geht wegen grep und xargs ohne besondere Hacks nur unter Linux.

amend

Amend hängt den commit an einen bereits bestehenden an. Dabei wird die Commit-Message des vorherigen Commits übernommen. Dadurch ändert sich die commit-id, aber man hält seine Historie frei von vielen unnötigen Commitmessages (Wie oft hast du schon „wip“ als commit message verwendet?). Achtung: Da die commit-id geändert wird sollte man dies nur bei entweder ungepushten Commits machen, oder bei eigenen Branches, die bisher niemand gepullt hat. Niemals nie machen wir das auf dem master!

force-push

Hat man zum Beispiel amend auf einen bereits gepushten Branch ausgeführt wird git sich weigern, den Branch zu pushen, da durch die Änderung der commit-id git den vorherigen commit nicht mehr findet, verwirrt ist und den Dienst verweigert. Wir müssen den Push also erzwingen, was mit force-push gemacht wird. Nochmal: Niemals nie wird auf einen branch geforce-pusht, den schon jemand anders gepullt haben könnte!
 
Benutzt du eigene git aliase? Dann pack sie hier als Kommentar rein!