1 Git Tricks
1.1 Konfiguration
1.1.1 Farbige Ausgabe (status)
git config --global color.ui auto
1.2 Tricks
1.2.1 Wiederherstellen
1.2.1.1 Lokal Gelöschtes Verzeichnis bzw Datei aus HEAD wiederherstellen
Dieses vorgehen wird jedoch keine Änderungen an Dateien wieder rückgängig machen.
git checkout -- dir_or_file
1.2.1.2 Alle Änderungen verwerfen und aus dem Head wiederherstellen
Wir haben lokale Änderungen an Dateien, welche wir noch nicht eingecheckt haben. Wir haben dabei auch neue Dateien, die untracked sind. Deswegen löschen wir erstmal alles und stellen es wieder her. Wenn wir den reset alleine durchführen, bleiben alle untracked Dateien im Verzeichnis bestehen und wir müssten diese mühsam von hand löschen.
cd /path/to/reporsitory
rm * -fr
git reset --hard
1.2.1.3 Alle Änderungen verwerfen und aus dem origin wiederherstellen
Wir gehen davon aus, das unser lokales git reporsitory Änderungen hat, die wir teilweise auch schon lokal eingecheckt haben. Wir wollen nun alle diese Änderungen vewerfen und aus dem remote git reporsitory "origin" wiederherstellen.
cd /path/to/reporsitory
rm * -fr
git remote update
git reset --hard
1.2.2 Remote-Branch fetchen
git fetch origin branchname
1.2.3 Remote Branches und deren Version
Zeit die remote branches an, sowie deren Versionen.
git ls-remote origin
1.2.4 Remote Branch löschen
git push origin :<branch>
1.2.5 Remote Tag löschen
git push origin :tags/<tagnam
1.2.6 Unterschied zum origin
Zeigt den Unterschied der Commits des aktuellen git-Reporsitories mit dem origin an
git log ..origin/master
im Gegensatz dazu werden hier alle Commits angezeigt
git log origin/master
1.2.7 Diffs erzeugen
1.2.7.1 Incoming Diff von HEAD zu origin master
Hier werden nur Änderungen angezeigt, die vom origin/master kommen würden, nicht umgekehrt!
git fetch origin master
git diff master...origin/master
1.2.7.2 In/out Diff von HEAD zu origin master
Änderunge in und out von HEAD zu origin master
git fetch origin master
git diff master origin/master
1.2.7.3 Diff von WC(not updated) zu master
Das sind also lokale, noch nicht in die staging area überführte Änderungen. Also WC(not updated)<->Staging. "Untracked files" sowie auch "Staged(to be committed)" Änderungen werden nicht angezeigt.
git --no-pager diff --
1.2.7.4 Diff des WC zum HEAD
Dies zeigt alle Änderungen, "to updated", "staged" und committed zum aktuellen Head
git --no-pager diff HEAD
1.2.7.5 Diff vom WC zu remote branch
Dies zeigt alle Änderungen, "to updated", "staged" und committed zu einer branch, hie origin/master an
git --no-pager diff origin/master
1.2.7.6 Man kann dies entsprechend auch in einer Datei speichern
git diff master...origin/master > patch.diff
1.2.7.7 Patch aus einem bestimmten Commit bzw. in einer bestimmten Range
git log cd4d2c40dcff1fde129b3be10b8fd3e9b34a087f..c0f5fd7f80d6edbfa295d4c0f04fbfb6eb5f9dac -p
oder
git diff cd4d2c40dcff1fde129b3be10b8fd3e9b34a087f..c0f5fd7f80d6edbfa295d4c0f04fbfb6eb5f9dac
Und für Drupal dann korrekter Weise
git diff cd4d2c40dcff1fde129b3be10b8fd3e9b34a087f..c0f5fd7f80d6edbfa295d4c0f04fbfb6eb5f9dac --no-color --no-prefix
1.2.8 Lokale Daten über origin-Versionen updaten
Zeigt verglichen zu oben alle logs des origins an, nicht nur den unterschied
git remote update
holt sich die aktuellen commit logs etc vom remote repo. Wichtig wenn man prüfen möchte, ob sich was zum aktuellen clone verändern hat
1.2.9 Löscht alle nicht mehr vorhanden Dateien aus dem Repository
git status | grep deleted | awk -F" " '{print $3}' | xargs git rm





Kommentar hinzufügen