Git: Jeder kennt es, mit diesem Buch verstehen Sie es! Git ist ein Versions- und Projektverwaltungsprogramm für Softwareentwickler. 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. In diesem Handbuch zeigen Ihnen Michael Kofler und Bernd Öggl, wie Sie Änderungen einchecken und Repositorys klonen. Sie erfahren außerdem, wie Git Ihnen den Arbeitsalltag als Entwickler leichter macht. Einsteiger profitieren in den ersten Kapiteln von einem anschaulichen Schnelleinstieg und allen wichtigen Grundlagen. In späteren Kapiteln bieten die Autoren zahlreiche Best Practices für eine effiziente Projektverwaltung sowie ein Troubleshooting für die gängigsten Probleme und Fehlermeldungen. Im Anhang finden sich die wichtigsten Kommandos in einer übersichtlichen Git-Kommandoreferenz. Mit diesem Git-Handbuch behalten Sie den Überblick und sorgen für mehr Effizienz und Produktivität in Ihren Software-Projekten. Git effektiv nutzen und sicher administrierenFeatures von GitHub und GitLab einsetzenSchnelleinstieg, Best Practices und Workflows für eigene Repositorys Aus dem Inhalt:Git in zehn Minuten: der SchnelleinstiegInstallation und EinrichtungGrundlagen: Repos, Commits, Branches, MergingGitLab: Projekte lokal hostenGitHub: der Marktplatz für SoftwareprojekteGitHub-Alternativen: Bitbucket, Azure DevOps Services, Gitolite und mehrArbeitstechniken: History, Feature Branches, Stashing, Hooks und mehrWorkflows: So nutzen Sie Git effektivBest Practices und TroubleshootingKommandoreferenz
Inhaltsverzeichnis
Vorwort . . . 9
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 . . . 38
2. 4 . . . Authentifizierung . . . 52
2. 5 . . . Entwicklungsumgebungen und Editoren . . . 64
2. 6 . . . An einem fremden GitHub-Projekt mitarbeiten . . . 71
3. Git-Grundlagen . . . 75
3. 1 . . . Begriffe und Konzepte . . . 75
3. 2 . . . Die Git-Datenbank . . . 80
3. 3 . . . Commits . . . 84
3. 4 . . . Commit-Undo . . . 92
3. 5 . . . Branches . . . 100
3. 6 . . . Merge . . . 107
3. 7 . . . Stashing . . . 114
3. 8 . . . Remote Repositories . . . 116
3. 9 . . . Merge-Konflikte lösen . . . 128
3. 10 . . . Rebasing . . . 135
3. 11 . . . Tags . . . 140
3. 12 . . . Referenzen auf Commits . . . 146
3. 13 . . . Git-Interna . . . 151
4. Datenanalyse im Git-Repository . . . 155
4. 1 . . . Commits durchsuchen (git log) . . . 155
4. 2 . . . Dateien durchsuchen . . . 166
4. 3 . . . Fehler suchen (git bisect) . . . 172
4. 4 . . . Statistik und Visualisierung . . . 173
5. GitHub . . . 181
5. 1 . . . Pull-Requests . . . 182
5. 2 . . . Actions . . . 187
5. 3 . . . Paketmanager (GitHub Packages) . . . 196
5. 4 . . . Automatische Sicherheits-Scans . . . 201
5. 5 . . . Weitere GitHub-Funktionen . . . 205
5. 6 . . . GitHub CLI . . . 211
5. 7 . . . Codespaces . . . 215
6. GitLab . . . 219
6. 1 . . . On Premises versus Cloud . . . 220
6. 2 . . . Installation . . . 221
6. 3 . . . Das erste Projekt . . . 228
6. 4 . . . Pipelines . . . 230
6. 5 . . . Merge-Requests . . . 240
6. 6 . . . Web-IDE . . . 243
6. 7 . . . GitPod . . . 244
7. Azure DevOps, Bitbucket, Gitea und Gitolite . . . 247
7. 1 . . . Azure DevOps . . . 247
7. 2 . . . Bitbucket . . . 252
7. 3 . . . Gitea . . . 254
7. 4 . . . Gitolite . . . 265
8. Workflows . . . 269
8. 1 . . . Anweisungen für das Team . . . 269
8. 2 . . . Solo-Entwicklung . . . 270
8. 3 . . . Feature-Branches für Teams . . . 272
8. 4 . . . Merge/Pull-Requests . . . 279
8. 5 . . . Long-running Branches -- Gitflow . . . 283
8. 6 . . . Trunk-based Development . . . 288
8. 7 . . . Welcher Workflow ist der Richtige? . . . 291
9. Arbeitstechniken . . . 293
9. 1 . . . Hooks . . . 293
9. 2 . . . Prägnante Commit-Messages . . . 298
9. 3 . . . Submodule und Subtrees . . . 305
9. 4 . . . Mehr Komfort in Bash und Zsh . . . 316
9. 5 . . . git diff mit »delta« lesbarer darstellen . . . 319
10. Git in der Praxis . . . 321
10. 1 . . . Etckeeper . . . 322
10. 2 . . . Dotfiles mit Git verwalten . . . 325
10. 3 . . . Zugriff auf Subversion mit git-svn . . . 332
10. 4 . . . Von SVN zu Git migrieren . . . 336
10. 5 . . . Ein Blog mit Git und Hugo . . . 341
11. Git-Probleme und ihre Lösung . . . 353
11. 1 . . . Git-Fehlermeldungen (Ursache und Lösung) . . . 354
11. 2 . . . Leere Verzeichnisse speichern . . . 361
11. 3 . . . Merge für eine einzelne Datei . . . 362
11. 4 . . . Dateien permanent aus Git löschen . . . 363
11. 5 . . . Ein Projekt aufteilen . . . 371
11. 6 . . . Commits in einen anderen Branch verschieben . . . 372
12. Kommandoreferenz . . . 375
12. 1 . . . git-Kommando . . . 375
12. 2 . . . Revisionssyntax . . . 408
12. 3 . . . git-Konfiguration . . . 409
Index . . . 415