Git

Dezentrale Versionsverwaltung im TeamGrundlagen und Workflows

René Preißel and Bjørn Stachmann

Cite this publication as

René Preißel, Bjørn Stachmann, Git (2019), dpunkt.verlag, Heidelberg, ISBN: 9783960887300

5763
accesses
66
quotes

Description / Abstract

Git ist eine der beliebtesten Versionsverwaltungen. Die Vielfalt an Kommandos, Optionen und Konfigurationen wirkt anfangs aber oft einschüchternd – obwohl die Grundkonzepte einfach sind und man schon mit wenigen davon effektiv arbeiten kann.
Die Autoren dieses Buches bieten daher zunächst eine kompakte Einführung in die Konzepte und jene Befehle, die man im Entwickleralltag wirklich benötigt. Anschließend widmen sie sich ausführlich den wichtigsten Workflows bei der Softwareentwicklung im Team und zeigen, wie Git dort eingesetzt wird.
Behandelt werden u.a. folgende Workflows:


Sie lernen in diesem Buch alle wichtigen Git-Befehle und -Funktionen kennen und erfahren, wie Sie sie effektiv anwenden – sowohl über die Kommandozeile als auch mit Tools wie Atlassian Source Tree. Darüber hinaus erfahren Sie, wie Git mit dem Build-Server Jenkins genutzt werden kann oder wie Sie auf Plattformen wie GitHub oder GitLab mit Pull-Requests arbeiten. Zudem lernen Sie fortgeschrittene Features kennen, wie z.B. Submodules, Subtrees und Worktrees.
Die 5. Auflage wurde Dank des Feedbacks unserer Leser noch einmal gründlich überarbeitet und ist jetzt an vielen Stellen präziser und besser verständlich. Da Git inzwischen bei vielen Unternehmen schon lange im  Einsatz ist, werden die dort versionierten Projekte auch immer größer. Deshalb ist ein neues Kapitel voll mit Tipps zum Umgang mit besonders großen Repositorys hinzugekommen.
"Eine rundum gelungene Darstellung des Themas, vom Verlag nur Entwicklern empfohlen, ist jedoch auch jedem Anfänger zu empfehlen, der sich durch zunächst unbekannte Begriffe nicht abschrecken lässt. Lesenswert!"
python-verband.org

Description

René Preißel arbeitet als freiberuflicher Softwarearchitekt, Entwickler und Trainer. Er beschäftigt sich seit vielen Jahren mit der Entwicklung von Anwendungen und dem Coaching von Teams. Seine Arbeitsschwerpunkte liegen im Bereich Softwarearchitektur, Java-Entwicklung und Build-Management.
Mehr Informationen unter "eToSquare.de".
Bjørn Stachmann arbeitet als Software Developer für die Otto (GmbH & Co KG) in Hamburg. Seine Schwerpunkte liegen in den Bereichen Java-Entwicklung, Softwarearchitektur und Hadoop. Sein aktuelles Arbeitsfeld ist der Hadoop-basierte Big-Data-Stack für die BI-Plattform BRAIN.

Table of content

  • BEGINN
  • Vorwort
  • Inhaltsverzeichnis
  • Grundlegende Konzepte
  • Dezentrale Versionsverwaltung - alles anders?
  • Das Repository - die Grundlage dezentralen Arbeitens
  • Branching und Merging - ganz einfach!
  • Zusammenfassung
  • Erste Schritte mit der Kommandozeile
  • Git einrichten
  • Ein paar Hinweise für Windows-User
  • Git einrichten
  • Das erste Projekt mit Git
  • Zusammenarbeit mit Git
  • Zusammenfassung
  • Erste Schritte mit SourceTree
  • SourceTree konfigurieren
  • Das erste Projekt mit Git
  • Zusammenarbeit mit Git
  • Zusammenfassung
  • Was sind Commits?
  • Zugriffsberechtigungen und Zeitstempel
  • Die Befehle add und commit
  • Exkurs: Mehr über Commit-Hashes
  • Eine Historie von Commits
  • Das HEAD-Commit
  • Eine etwas andere Sichtweise auf Commits
  • Commits untersuchen
  • Viele unterschiedliche Historien desselben Projekts
  • Schreibweisen für Commits
  • Zusammenfassung
  • Commits zusammenstellen
  • Der status-Befehl
  • Der Stage-Bereich umfasst alle Projektdateien
  • Was tun mit Änderungen, die nicht übernommen werden sollen?
  • Mit .gitignore Dateien unversioniert lassen
  • Stashing: Änderungen zwischenspeichern
  • Zusammenfassung
  • Das Repository
  • Ein einfaches und effizientes Speichersystem
  • Verzeichnisse speichern: Blob und Tree
  • Gleiche Daten werden nur einmal gespeichert
  • Kompression ähnlicher Inhalte
  • Ist es schlimm, wenn verschiedene Daten zufällig denselben Hashwert bekommen?
  • Commits
  • Wiederverwendung von Objekten in der Commit-Historie
  • Umbenennen, verschieben und kopieren
  • Zusammenfassung
  • Branches verzweigen
  • Parallele Entwicklung
  • Bugfixes in älteren Versionen
  • Branches
  • Aktiver Branch
  • Der Master-Branch
  • Branch-Zeiger umsetzen
  • Branch löschen
  • Und was ist, wenn man die Commit-Objekte wirklich loswerden will?
  • Zusammenfassung
  • Branches zusammenführen
  • Was passiert bei einem Merge?
  • Konflikte
  • Fast-Forward-Merges
  • First-Parent-History
  • Knifflige Merge-Konflikte
  • Zusammenfassung
  • Mit Rebasing die Historie glätten
  • Das Prinzip: Kopieren von Commits
  • Und wenn es zu Konflikten kommt?
  • Was passiert mit den ursprünglichen Commits nach dem Rebasing?
  • Empfehlungen zum Rebasing
  • Cherry-Picking
  • Zusammenfassung
  • Repositorys erstellen, klonen und verwalten
  • Ein Repository erstellen
  • Das Repository-Layout
  • Bare-Repositorys
  • Vorhandene Dateien übernehmen
  • Ein Repository klonen
  • Wie sagt man Git, wo das Remote-Repository liegt?
  • Kurznamen für Repositorys: Remotes
  • Das Origin-Repository
  • Zusammenfassung
  • Austausch zwischen Repositorys
  • Fetch, Pull und Push
  • Remote-Tracking-Branches
  • Einen Remote-Branch bearbeiten
  • Ein paar Begriffe, die man kennen sollte
  • Fetch: Branches aus einem anderen Repository holen
  • Fetch: Aufrufvarianten
  • Push mit --force
  • Erweiterte Möglichkeiten
  • Zusammenfassung
  • Versionen markieren
  • Arbeiten mit Tags erstellen
  • Welche Tags gibt es?
  • Die Hashes zu den Tags ausgeben
  • Die Log-Ausgaben um Tags anreichern
  • In welcher Version ist es "drin"?
  • Wie verschiebt man ein Tag?
  • Und wenn ich ein "Floating Tag" brauche?
  • Zusammenfassung
  • Tipps und Tricks
  • Keine Panik - es gibt ein Reflog!
  • Lokale Änderungen temporär ignorieren
  • Änderungen an Textdateien untersuchen
  • alias - Abkürzungen für Git-Befehle
  • Branches als temporäre Zeiger auf Commits nutzen
  • Commits auf einen anderen Branch verschieben
  • Mehr Kontrolle bei Fetch, Push und Pull
  • Git-Version auf Ubuntu Linux aktualisieren
  • Workflow-Einführung
  • Warum Workflows?
  • Welche Workflows sind wann sinnvoll?
  • Aufbau der Workflows
  • Ein Projekt aufsetzen
  • Gemeinsam auf einem Branch entwickeln
  • Mit Feature-Branches entwickeln
  • Mit Forks entwickeln
  • Kontinuierlich Releases durchführen
  • Periodisch Releases durchführen
  • Mit mehreren aktiven Releases arbeiten
  • Ein Projekt mit großen binären Dateien versionieren
  • Große Projekte aufteilen
  • Kleine Projekte zusammenführen
  • Lange Historien auslagern
  • http://kapitel26.github.io
  • Ein Projekt nach Git migrieren
  • Integration mit Jenkins
  • Vorbereitungen
  • Ein einfaches Git-Projekt einrichten
  • Hook als Build-Auslöser
  • Ein Tag für jeden erfolgreichen Build
  • Pull-Requests bauen
  • Automatischer Merge von Branches
  • Mit Jenkins Pipelines arbeiten
  • Große Repositorys
  • Repositorys mit sehr vielen Dateien
  • Sparse Checkout
  • Mit Watchman Dateiänderungen schneller erkennen
  • Repositorys mit großem Speicherbedarf
  • Shallow Clone
  • Zusammenfassung
  • Abhängigkeiten zwischen Repositorys
  • Abhängigkeiten mit Submodulen
  • Abhängigkeiten mit Subtrees
  • Zusammenfassung
  • Was gibt es sonst noch?
  • Worktrees - mehrere Workspaces mit einem Repository
  • Interaktives Rebasing - Historie verschönern
  • Umgang mit Patches
  • Archive erstellen
  • Grafische Werkzeuge für Git
  • Repository im Webbrowser anschauen
  • Zusammenarbeit mit Subversion
  • Hooks - Git erweitern
  • Mit Bisection Fehler suchen
  • Die Grenzen von Git
  • Hohe Komplexität
  • Komplizierter Umgang mit Submodulen
  • Ressourcenverbrauch bei großen binären Dateien
  • Repositorys können nur vollständig verwendet werden
  • Autorisierung nur auf dem ganzen Repository
  • Mäßige grafische Werkzeuge für die Historienauswertung
  • Schritt-für-Schritt-Anleitungen
  • Workflow-Verzeichnis
  • Index

Related titles

    More of this author(s)