Git und Git Workflows
Verteilte Versionskontrolle, einzigartige Features
Längst ist Git im kommerziellen Umfeld im Einsatz, auch weil Entwickler fortwährend die vollständige Versionshistorie vorrätig haben. Am Arbeitsplatz bleibt die Arbeitsweise dieselbe: Branches sind immer lokal und können u. a. pro Feature oder Experiment isoliert angelegt werden. Mit den bezogenen Änderungen aus Remote Repositories gelingen lokaler Vergleich und Merge, ohne dass sich Änderungen schon in lokalen Branches vorher widerspiegeln. Die Selektion für Commits – alles oder bestimmte Dateibereiche – ist ein weiterer deutlicher Vorteil von Git.
This training can be held in German or English language. View this agenda in English.
Unterschiede zu klassischen Versionskontrollsystemen
- Grundlagen und Vorteile verteilter Versionskontrollsysteme
- Warum der SHA als „Revisionsnummer“ so wichtig ist
- Kryptographische Sicherheit der Projektgeschichte
- Wie Git Daten über Zeiger verwaltet und mehr als nur „CVS done right“ ist; Abgrenzung zu Mercurial
Grundlegendes Git
- Umgang mit der Arbeitskopie und dem Index
- Commit, Rücksetzen und Rückgängigmachen von Änderungen
- Dateien dauerhaft oder temporär ignorieren
- Changesets an Server übertragen und abrufen
- Behandlung von Mergekonflikten
- Darstellung von Unterschieden per Konsole und visuellen Tools
- Features mithilfe von Branches getrennt entwickeln
- Zusammenführen von Branches: Unterschied Merging zu Rebasing
- Veröffentlichen von Branches
Erweitertes Git
- Arbeit mit mehreren Servern und Remote Branches
- Partielle Commits und Rücksetzungen
- Das
reflog
als „Papierkorb“ mit Zusatzfunktionen - Mit
git stash
Zwischenergebnisse ablegen - Cherry-picking zur Auswahl der „Rosinen“ aus Commits effektiv nutzen
git bisect
zum Auffinden von Bugs
Git Workflows
- git-flow, ein Modell zur systematischen Arbeit mit Branches
- Erzeugen isolierter Features einer Software
- Erstellen von Releases, Anwenden von Hotfixes, Wartung alter Releases
- Mit Stilen „Subversion“, „Integrationsmanager“ und „Diktator-und-Leutnant“ normale bis massive Projekte mit Fork, Pull und Push abbilden
- Multiple und trianguläre Workflows
Git Repository Hosting
- Einrichtung, Hosting und Betrieb von Git-Repositories
- Hosting per Netzwerkfreigabe
- Feingranulare Authentifizierung, Zugriffskontrolle per SSH und Gitolite
- Code-Hosting-Services wie Bitbucket oder GitHub
- Integration, Migration / Konvertierung von vorhandenen Bazaar-, ClearCase-, CVS-, JEDI VCS-, Mercurial-, Perforce-, Rational-, RTC-, SourceAnywhere-, SourceSafe-, SVN-, TFS-, Vault- und Veracity-Repositories zu Git
- Best Practices für Git-Repository-Strukturen, inklusive für große Projekte mit Millionen Zeilen Code
- Typische Fragestellungen in Softwareentwicklungsprozessen in Verbindung mit Git wie Variantenpflege, zwischen verschiedenen Projekten geteilten Dateien oder Modifikationen einzelner Dateien in einer gemeinsamen Basis
- Lösungen per „git-subrepo“ oder „git-externals“
- Alternativen wie „repo“, „git-repo“ (mit Push), „git-subtree“
- Synchronisation und Administration von Git-Repositories über Unternehmensgrenzen hinweg
- Nutzung von Open-Source-Projekten und Mitarbeit daran
Arbeit mit Windows Explorer, IDE und Sonstiges
- Unterkomponenten mit „git-submodule“ verwenden
- Versand und Empfang von Patches mit
git format-patch
,git apply-patch
,git am
- Grafische Werkzeuge zur Bedienung von Git
- Plug-ins für Windows Explorer
- Add-ins, Source Control Provider und Arbeit mit NetBeans, IntelliJ-basierten IDEs und Visual Studio
- Verwendung von Git / Git Workflows bei CMS, u. a. bei TYPO3
- Kollaborative Code Review-Systeme für Git wie Pull Requests oder Gerrit
- Features nur auf der Kommandozeile
- Visualisierung mit Gource
Entstehungsgeschichte
Git wurde mit Wert auf Geschwindigkeit, Einfachheit und nicht-lineare Entwicklung konzipiert. Zahlreiche parallele Branches stellen wie die Zusammenführung ihrer Ergebnisse kein Problem dar.