Git für Fortgeschrittene
Schneller und komfortabler mit Git
Neben gängigen Operationen wie commit, push/pull und rebase besteht Git noch aus weit mehr nützlichen Befehlen die man wie einen Werkzeugkasten betrachten kann. Diese und die Verwendung von Skripten vereinfachen die Arbeit mit Git. So lässt sich praktisch jeder beliebige Workflow abbilden und die tägliche Arbeit erleichtern. Fragen zu Git und Git Workflows können gerne mitgebracht werden.
Bequemer mit Git arbeiten mit Befehlen, Parametern und Skripten
Nichts für Einsteiger: Die in den Git manpages etwas versteckt stehenden Leistungsmerkmale werden gezeigt, welche die Inhalte einer Git und Git Workflows-Schulung abrunden.
- Was sich bei Git in den neueren Versionen getan hat, etwa bei Befehlen wie
switch
,restore
und Parametern wiepush --force-with-lease
,clone --recurse-submodules
u. a. - Erstellen neuer oder komplexer Operationen mit
git-<Befehl>
-Skripten - Revisionen händisch mit
git write-tree
undgit-commit-tree
erzeugen - Inspektion uns Auswahl von bspw. Dateien, Commits und Branches mit
fzf
- Bessere Vergleiche mit
diff-so-fancy
undgit-delta
- Adressierung von Commits mittels Notationen wie
~
,^
,master@{upstream}
- Änderungen mithilfe von
git update-index --skip-worktree
temporär ignorieren - Verwendung und Einsatz von Submodulen (Beispiel)
- Einsatz von
git subtree
und Subtree Merge - Erstellung von Bundles zum Datenaustausch bspw. per USB-Stick (Beispiel)
- Sicherheitsnetz
git reflog
, auffinden und wiederherstellen „unerreichbarer“ Commits - Datenaustausch zwischen Workstations mittels
git daemon
- Arbeit mit mehreren Arbeitsverzeichnissen
git worktree
- Aufräumen und Packen von Repositories nach History-Rewrites (
git gc
,git prune
,git repack
) - Bequemes „Abräumen des (Git-)Arbeitstischs“ und Wiederherstellung auf einem beliebigen Rechner nur mit einem Kommando
git hi
bzw.git bye
(Quelle)
Präzise und praktische Integration
- Die Lesbarkeit und Verständlichkeit der Historie als „oberste Direktive“
- Aufräumen der Revisionsgeschichte mit Interactive Rebase
- Zusammenfassung und Aufteilung von Commits, u. a. mit
git commit --fixup
- Neuordnen und Entfernen von Commits
- Prüfung jedes Commits eines Bereichs mit
exec
- Zusammenfassung und Aufteilung von Commits, u. a. mit
- Kopieren von Commits
git cherry-pick
- Auffinden durch welchen Commit ein Bug verursacht wurde und seit wann er in Releases ausgeliefert wurde, Möglichkeiten der Behebung
Git Workflows, Branching und Sonstiges
Es gibt keine Git „Best Practice“-Workflows. Git kann und sollte so einsetzt werden, dass es am besten zu den Anforderungen des Projekts passt. Genau dafür wurde es mit entwickelt.
- Wie man zum richtigen Git Workflow findet vs. landläufige Workflows wie „OneFlow“ oder „git-flow“
- Pull Requests und Continuous Integration mit GitLab oder GitHub, gängige Voreinstellungen „fast forward merge“ vs. „merge commit“
- Arbeit mit Wegwerfintegrationsbranches mit
git rerere
, Wiederverwendung von Konfliktlösungen - Strategien für sich häufig ändernde Ressourcen in Repositories, wie Konfigurationsdateien
- Zeilenenden bei macOS, Linux und Windows,
git add --renormalize
- Große Dateien, wie Audio, Video, Datasets und das Git Large File Storage (LFS)