E-Book, Deutsch, 423 Seiten
Reihe: Rheinwerk Computing
Öggl / Kofler Git
2. Auflage 2022
ISBN: 978-3-8362-8847-7
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection
Projektverwaltung für Entwickler und DevOps-Teams
E-Book, Deutsch, 423 Seiten
Reihe: Rheinwerk Computing
ISBN: 978-3-8362-8847-7
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection
Git gehört zum unverzichtbaren Handwerkszeug aller IT-Profis und darf in keiner Toolbox fehlen. Ob Sie Konfigurationsdateien versionieren wollen, an Open-Source-Projekten mitarbeiten oder im Team komplexe Anwendungen entwickeln: Git sorgt dafür, dass Sie den Überblick behalten. Daher lernen Sie hier nicht nur, wie Sie Änderungen einchecken und fremde Repositorien klonen, sondern erfahren, wie Git Ihnen den Arbeitsalltag leichter macht. Schnelleinstieg mit Praxistipps und Kommandoreferenz inklusive.
Aus dem Inhalt:
- Git in zehn Minuten: der Schnelleinstieg
- Installation und Einrichtung
- Grundlagen: Repos, Commits, Branches, Merging
- GitLab: Projekte lokal hosten
- GitHub: der Marktplatz für Softwareprojekte
- GitHub-Alternativen: Bitbucket, Azure DevOps Services, Gitolite und mehr
- Arbeitstechniken: History, Feature Branches, Stashing, Hooks und mehr
- Workflows: So nutzen Sie Git effektiv
- Best Practices und Troubleshooting
- Kommandoreferenz
Die Fachpresse zur Vorauflage:
t3n: »Das Buch zeigt wie ein gut organisiertes Git-Repo aussieht und wie Git zur effektiven Arbeitshilfe wird.«
Make: Magazin: »Wer in einem neuen Arbeitsumfeld schnell produktiv auf Git umsteigen muss, für den ist das Buch perfekt.«
Bernd Öggl ist ein erfahrener Systemadministrator und Webentwickler. Bereits seit 2001 erstellt er für Kunden Websites, setzt individuelle Entwicklerprojekte um und gibt sein Wissen auf Konferenzen und in Publikationen weiter.
Autoren/Hrsg.
Weitere Infos & Material
1. Git in zehn Minuten ... 13 1.1 ... Was ist Git? ... 13 1.2 ... Software von GitHub herunterladen ... 16 1.3 ... Programmieren lernen mit Git-Unterstützung ... 18 2. Learning by Doing ... 23 2.1 ... git-Kommando installieren ... 23 2.2 ... GitHub-Account und -Repositories einrichten ... 31 2.3 ... Mit dem Kommando »git« arbeiten ... 37 2.4 ... Authentifizierung ... 50 2.5 ... Git spielerisch lernen (Githug) ... 61 2.6 ... Entwicklungsumgebungen und Editoren ... 63 2.7 ... An einem fremden GitHub-Projekt mitarbeiten ... 72 2.8 ... Synchronisation und Backups ... 74 3. Git-Grundlagen ... 77 3.1 ... Nomenklatur ... 77 3.2 ... Die Git-Datenbank ... 82 3.3 ... Commits ... 86 3.4 ... Commit-Undo ... 94 3.5 ... Branches ... 102 3.6 ... Merge ... 108 3.7 ... Stashing ... 116 3.8 ... Remote Repositories ... 118 3.9 ... Merge-Konflikte lösen ... 129 3.10 ... Rebasing ... 136 3.11 ... Tags ... 142 3.12 ... Referenzen auf Commits ... 147 3.13 ... Git-Interna ... 152 4. Datenanalyse im Git-Repository ... 157 4.1 ... Commits durchsuchen (git log) ... 157 4.2 ... Dateien durchsuchen ... 168 4.3 ... Fehler suchen (git bisect) ... 173 4.4 ... Statistik und Visualisierung ... 175 5. GitHub ... 181 5.1 ... Pull-Requests ... 182 5.2 ... Actions ... 187 5.3 ... Paketmanager (GitHub Packages) ... 195 5.4 ... Automatische Sicherheits-Scans ... 201 5.5 ... Weitere GitHub-Funktionen ... 205 5.6 ... GitHub CLI ... 210 5.7 ... Codespaces ... 214 6. GitLab ... 217 6.1 ... On Premises versus Cloud ... 218 6.2 ... Installation ... 219 6.3 ... Das erste Projekt ... 226 6.4 ... Pipelines ... 228 6.5 ... Merge-Requests ... 238 6.6 ... Web-IDE ... 241 6.7 ... GitPod ... 242 7. Azure DevOps, Bitbucket, Gitea und Gitolite ... 245 7.1 ... Azure DevOps ... 245 7.2 ... Bitbucket ... 250 7.3 ... Gitea ... 252 7.4 ... Gitolite ... 263 8. Workflows ... 267 8.1 ... Anweisungen fr das Team ... 267 8.2 ... Solo-Entwicklung ... 268 8.3 ... Feature-Branches fr Teams ... 270 8.4 ... Merge/Pull-Requests ... 277 8.5 ... Long-running Branches -- Gitflow ... 281 8.6 ... Trunk-based Development ... 286 8.7 ... Welcher Workflow ist der Richtige? ... 289 9. Arbeitstechniken ... 291 9.1 ... Hooks ... 291 9.2 ... Prägnante Commit-Messages ... 297 9.3 ... Submodule und Subtrees ... 304 9.4 ... Mehr Komfort in Bash und Zsh ... 315 9.5 ... Zwei-Faktor-Authentifizierung ... 317
10. Git in der Praxis ... 323 10.1 ... Etckeeper ... 324 10.2 ... Dotfiles mit Git verwalten ... 327 10.3 ... Zugriff auf Subversion mit git-svn ... 334 10.4 ... Von SVN zu Git migrieren ... 338 10.5 ... Ein Blog mit Git und Hugo ... 343
11. Git-Probleme und ihre Lösung ... 355 11.1 ... Git-Fehlermeldungen (Ursache und Lösung) ... 356 11.2 ... Leere Verzeichnisse speichern ... 363 11.3 ... Merge für eine einzelne Datei ... 364 11.4 ... Dateien permanent aus Git löschen ... 365 11.5 ... Ein Projekt aufteilen ... 373 11.6 ... Commits in einen anderen Branch verschieben ... 374
12. Kommandoreferenz ... 377 12.1 ... git-Kommando ... 377 12.2 ... Revisionssyntax ... 409 12.3 ... git-Konfiguration ... 410
Vorwort
Immer, wenn mehrere Personen gemeinsam an einem Softwareprojekt arbeiten, braucht es ein System, um alle durchgeführten Änderungen nachvollziehbar zu speichern. Gleichzeitig gibt ein derartiges Versionsverwaltungssystem allen Entwicklern Zugriff auf das gesamte Projekt. Jeder Programmierer weiß, was die anderen zuletzt gemacht haben, jede Entwicklerin kann den Code der anderen ausprobieren und das Zusammenspiel mit ihren eigenen Änderungen testen.
In der Vergangenheit gab es viele Versionsverwaltungssysteme, z. B. CVS, Subversion (SVN) oder Visual SourceSafe. Im vergangenen Jahrzehnt hat sich aber Git zum De-facto-Standard entwickelt.
Einen wesentlichen Anteil an diesem Erfolg hatte die Webplattform GitHub, die den Einstieg und die Nutzung von Git wesentlich vereinfachte. Unzählige Open-Source-Projekte nutzen das kostenlose Angebot GitHubs zum Projekt-Hosting. Kommerzielle Kunden, die den Quellcode nicht veröffentlichen wollten, zahlen für diesen Service. GitHub ist natürlich nicht die einzige Git-Plattform: Wichtige Konkurrenten sind z. B. GitLab, Azure DevOps und Bitbucket. Dessen ungeachtet kaufte Microsoft 2018 GitHub für 7,5 Milliarden US$. Im Gegensatz zu anderen Übernahmen hat dies bisher der Popularität von GitHub nicht geschadet.
Die Geschichte von Git
Git entstand, weil Linus Torvalds für die Weiterentwicklung des Linux-Kernels ein neues Versionsverwaltungssystem brauchte. Die Entwicklergemeinde hatte zuvor das Programm BitKeeper verwendet. Linus Torvalds war mit dem Programm grundsätzlich zufrieden, eine Lizenzänderung machte aber einen Wechsel erforderlich. Von den damals verfügbaren Open-Source-Programmen genügte keines seinen hohen Ansprüchen.
So stoppte der Linux-Chefentwickler kurzzeitig seine Hauptarbeit und schuf in nur zwei Wochen das Grundgerüst von Git. Der Name Git steht sinngemäß für Blödmann oder Depp, und auch die Hilfeseite man git bezeichnet das Programm als the stupid content tracker.
Was für ein Understatement das ist, wurde erst nach und nach klar, als Linus Torvalds die Weiterentwicklung von Git längst wieder aus der Hand gegeben hatte: Nicht nur die Kernel-Entwickler stellten ihre Arbeit rasch und problemlos auf Git um, in den folgenden Jahren wechselten immer mehr Softwareprojekte auch außerhalb der Open-Source-Welt zu Git.
Den endgültigen Durchbruch schaffte Git, als sich Webplattformen wie GitHub und GitLab etablierten. Diese Websites vereinfachen das Hosting von Git-Projekten enorm und sind heute aus dem Git-Alltag nicht mehr wegzudenken. (Selbst der Linux-Kernel befindet sich mittlerweile auf GitHub!)
Ein bisschen ist das eine Ironie des Schicksals: Linus Torvalds wichtigstes Ziel beim Design von Git war es, ein dezentrales Versionsverwaltungssystem zu schaffen. Aber erst der zentralistische Ansatz von GitHub und Co. machte Git für Entwickler abseits der Guru-Liga richtig attraktiv.
Es gibt heute Stimmen, die die Bedeutung von Git ebenso hoch einschätzen wie die von Linux. Damit ist es Linus Torvalds gleich zwei Mal gelungen, einen Bereich des Software-Universums vollständig auf den Kopf zu stellen.
Jeder verwendet es, keiner versteht es
Bei aller Begeisterung für Git: Es ist unübersehbar, dass Git von Profis für Profis konzipiert wurde. Wir wollen in diesem Buch gar nicht erst den Eindruck erwecken, Git wäre einfach. Das ist es nicht:
-
Häufig führt nicht ein Weg zum Ziel, vielmehr gibt es mehrere Wege. Für die, die Git schon beherrschen, ist das nützlich; aber wenn Sie Git gerade lernen, verwirrt diese Vielfalt.
-
Vielen Open-Source-Projekten wird der Vorwurf gemacht, sie seien schlecht dokumentiert. Das kann man bei Git wirklich nicht sagen. Im Gegenteil! Jedes Git-Kommando, jede Anwendungsmöglichkeit wird in man-Seiten sowie auf der Website https://git-scm.com/docs so ausführlich und mit allen erdenklichen Sonderfällen erläutert, dass man sich in den Details geradezu verliert.
-
Erschwerend kommt hinzu, dass es ähnliche Begriffe mit unterschiedlichen Bedeutungen gibt, leicht zu verwechselnde Subkommandos, die stark voneinander abweichende Aufgaben erfüllen. Manche Begriffe haben je nach Kontext unterschiedliche Bedeutungen oder werden in der Dokumentation uneinheitlich verwendet.
Wir geben es ganz offen zu: Trotz jahrelanger Git-Praxis haben wir beim Schreiben dieses Buchs noch eine Menge Details dazugelernt!
Über dieses Buch
Natürlich ist es möglich, Git sehr minimalistisch zu verwenden. Allerdings können kleine Abweichungen von der täglichen Routine dann zu überraschenden und oft unverständlichen Nebenwirkungen oder Fehlern führen.
Jeder Git-Einsteiger kennt das Gefühl, wenn ein Git-Kommando eine unverständliche Fehlermeldung liefert: Mit kaltem Schweiß überlegt man, ob man gerade das Repository für alle Entwickler nachhaltig zerstört hat und wen man bitten könnte, Git mit den richtigen Kommandos doch zur Weiterarbeit zu überreden.
Deswegen ist es nicht zielführend, Git zu beschreiben, ohne dabei in die Tiefe zu gehen. Erst ein gutes Verständnis für die Funktionsweise von Git gibt die notwendige Sicherheit, Merge-Konflikte oder andere Probleme sauber beheben zu können.
Gleichzeitig war uns aber klar, dass dieses Buch nur funktionieren kann, wenn wir den wesentlichen Funktionen den Vorrang geben. Trotz 400 Seiten ist dieses Buch nicht die allumfassende Anleitung zu Git, die auch den letzten Sonderfall berücksichtigt und jedes noch so exotische Git-Subkommando vorstellt. Wir haben daher in diesem Buch die Spreu vom Weizen getrennt.
Dieses Buch ist in überschaubare Kapitel gegliedert, die Sie wie bei einem Bausteinsystem nach Bedarf lesen können:
-
Nach einer kurzen Einführung (»Git in zehn Minuten«) führen wir in den Kapiteln »Learning by Doing«, »Git-Grundlagen« und schließlich »Datenanalyse im Git-Repository« in den Umgang mit Git ein. Dabei konzentrieren wir uns auf die Nutzung von Git auf Kommandoebene und gehen nur am Rande auf Plattformen wie GitHub oder auf andere Benutzeroberflächen ein.
Git-Einsteigern empfehlen wir, mit diesen vier Kapiteln zu starten. Selbst wenn Sie schon etwas Git-Erfahrung haben, sollten Sie sich unbedingt ein paar Stunden Zeit nehmen, um »Git-Grundlagen« zu lesen und einige der dort vorgestellten Techniken (Merging, Rebasing etc.) in einem Test-Repository auszuprobieren.
-
Die folgenden drei Kapitel – »GitHub«, »GitLab« sowie »Azure DevOps, Bitbucket, Gitea und Gitolite« – stellen die wichtigsten Git-Plattformen vor. Gerade für komplexe Projekte bieten diese Plattformen nützliche Zusatzfunktionen, z. B. um automatische Tests durchzuführen oder um Continuous Integration zu implementieren.
Selbstverständlich berücksichtigen wir auch den Fall, dass Sie Ihr Git-Repository selbst hosten möchten. Mit GitLab, Gitea oder Gitolite lässt sich dieser Wunsch relativ leicht realisieren.
-
Damit wenden wir uns von den Grundlagen der Praxis zu: Im Kapitel »Workflows« zeigen wir populäre Muster, wie Sie die Arbeit vieler Entwickler mit Git in geordnete Bahnen (Branches) leiten.
Im Kapitel »Arbeitstechniken« stehen fortgeschrittene Git-Funktionen im Vordergrund, z. B. Hooks, Submodule, Subtrees sowie die Zwei-Faktor-Authentifizierung, die alle größeren Git-Plattformen unterstützen.
»Git in der Praxis« zeigt, wie Sie auf Linux-Systemen Konfigurationsdateien (Dotfiles) oder das ganze /etc-Verzeichnis mit Git versionieren, wie Sie ein Projekt von SVN auf Git umstellen oder wie Sie eine simple Website schnell und einfach mit Git und Hugo realisieren.
»Gängige Probleme und ihre Lösungen« hilft Ihnen bei schwer verständlichen Fehlermeldungen aus der Sackgasse. Hier finden Sie auch Anleitungen, wie Sie Sonderwünsche realisieren – z. B. wie Sie große Dateien aus dem Git-Repository entfernen oder wie Sie einen Merge-Vorgang nur für eine ausgewählte Datei durchführen.
-
Die »Kommandoreferenz« fasst in aller Kürze die wichtigsten Git-Kommandos und deren Optionen zusammen. Dabei haben wir uns vom Motto »weniger ist mehr« leiten lassen. Unser Ziel war nicht eine vollständige Referenz, sondern eine Art »Essenz von Git«.
Beispiel-Repositories
Einige Beispiele aus dem Buch stellen wir Ihnen auf GitHub zur Verfügung:
Lieber Leser, liebe Leserin!
Uns ist bewusst, dass Sie vielleicht nicht mit großer Freude die Lektüre dieses Buchs beginnen: Sie wollen oder müssen für ein Projekt Git verwenden. Aber Ihr Ziel ist nicht Git an sich, vielmehr wollen Sie Code produzieren, Ihr Projekt vorantreiben. Sie haben eigentlich weder Zeit noch Lust, sich mit Git zu beschäftigen – Sie wollen gerade so viel wissen, dass Sie Git fehlerfrei anwenden können.
Wir haben dafür Verständnis. Trotzdem...