Git, 2nd Edition

Book description

  • Behandelt die wichtigsten Szenarien und Problemfälle mit Git und wie man sie meistert* Keine umfassende Behandlung aller Git-Befehle (die man in der Praxis sowieso nicht braucht)

Table of contents

  1. 1 Grundlegende Konzepte
  2. 1.1 Dezentrale Versionsverwaltung – alles anders?
  3. 1.2 Das Repository – die Grundlage dezentralen Arbeitens
  4. 1.3 Branching und Merging – ganz einfach!
  5. 1.4 Zusammenfassung
  6. 2 Erste Schritte
  7. 2.1 Git einrichten
  8. 2.2 Das erste Projekt mit Git
  9. 2.3 Zusammenarbeit mit Git
  10. 2.4 Zusammenfassung
  11. 3 Was sind Commits?
  12. 3.1 Zugriffsberechtigungen und Zeitstempel
  13. 3.2 Die Befehle add und commit
  14. 3.3 Exkurs: Mehr über Commit-Hashes
  15. 3.4 Eine Historie von Commits
  16. 3.5 Eine etwas andere Sichtweise auf Commits
  17. 3.6 Viele unterschiedliche Historien desselben Projekts
  18. 3.7 Zusammenfassung
  19. 4 Commits zusammenstellen
  20. 4.1 Der Status-Befehl
  21. 4.2 Der Stage-Bereich speichert Momentaufnahmen
  22. 4.3 Was tun mit Änderungen, die nicht übernommen werden sollen?
  23. 4.4 Mit .gitignore Dateien unversioniert lassen
  24. 4.5 Stashing: Änderungen zwischenspeichern
  25. 4.6 Zusammenfassung
  26. 5 Das Repository
  27. 5.1 Ein einfaches und effizientes Speichersystem
  28. 5.2 Verzeichnisse speichern: Blob & Tree
  29. 5.3 Gleiche Daten werden nur einmal gespeichert
  30. 5.4 Kompression ähnlicher Inhalte
  31. 5.5 Ist es schlimm, wenn verschiedene Daten zufällig denselben Hashwert bekommen?
  32. 5.6 Commits
  33. 5.7 Wiederverwendung von Objekten in der Commit-Historie
  34. 5.8 Umbenennen, verschieben und kopieren
  35. 5.9 Zusammenfassung
  36. 6 Branches verzweigen
  37. 6.1 Parallele Entwicklung
  38. 6.2 Bugfixes in älteren Versionen
  39. 6.3 Branches
  40. 6.4 Swimlanes
  41. 6.5 Aktiver Branch
  42. 6.6 Branch-Zeiger umsetzen
  43. 6.7 Branch löschen
  44. 6.8 Und was ist, wenn man die Commit-Objekte wirklich loswerden will?
  45. 6.9 Zusammenfassung
  46. 7 Branches zusammenführen
  47. 7.1 Was passiert bei einem Merge?
  48. 7.2 Konflikte
  49. 7.3 Bearbeitungskonflikte
  50. 7.4 Konfliktmarkierungen
  51. 7.5 Bearbeitungskonflikte lösen
  52. 7.6 Und was ist mit den inhaltlichen Konflikten?
  53. 7.7 Fast-Forward-Merges
  54. 7.8 First-Parent-History
  55. 7.9 Knifflige Merge-Konflikte
  56. 7.10 Egal, es wird schon irgendwie gehen
  57. 7.11 Zusammenfassung
  58. 8 Mit Rebasing die Historie glätten
  59. 8.1 Das Prinzip: Kopieren von Commits
  60. 8.2 »Diamantenketten« vermeiden
  61. 8.3 Und wenn es zu Konflikten kommt?
  62. 8.4 Branches umpflanzen
  63. 8.5 Was passiert mit den ursprünglichen Commits nach dem Rebasing?
  64. 8.6 Warum ist es problematisch, Original und Kopie eines Commits im gleichen Repository zu haben?
  65. 8.7 Cherry-Picking
  66. 8.8 Zusammenfassung
  67. 9 Austausch zwischen Repositorys
  68. 9.1 Repositorys klonen
  69. 9.2 Wie sagt man Git, wo das andere Repository liegt?
  70. 9.3 Anderen Repositorys einen Namen geben
  71. 9.4 Abholen von Daten
  72. 9.5 Remote-Tracking-Branches: Wissen, was in anderen Repositorys »los« ist
  73. 9.6 Lokal mit Branches aus anderen Repositorys arbeiten
  74. 9.7 Pull = Fetch + Merge
  75. 9.8 Für Diamantenhasser: --rebase
  76. 9.9 Push – das Gegenstück zu Pull
  77. 9.10 Jeder so, wie er mag
  78. 9.11 Zusammenfassung
  79. 10 Versionen markieren
  80. 10.1 Arbeiten mit Tags erstellen
  81. 10.2 Welche Tags gibt es?
  82. 10.3 Die Hashes zu den Tags ausgeben
  83. 10.4 Die Log-Ausgaben um Tags anreichern
  84. 10.5 In welcher Version ist es »drin«?
  85. 10.6 Wie verschiebt man ein Tag?
  86. 10.7 Und wenn ich ein »Floating Tag« brauche?
  87. 10.8 Zusammenfassung
  88. 11 Abhängigkeiten zwischen Repositorys
  89. 11.1 Abhängigkeiten mit Submodulen
  90. 11.2 Abhängigkeiten mit Subtrees
  91. 11.3 Zusammenfassung
  92. 12 Tipps und Tricks
  93. 12.1 Keine Panik – Es gibt ein Reflog!
  94. 12.2 Lokale Änderungen temporär ignorieren
  95. 12.3 Änderungen an Textdateien untersuchen
  96. 12.4 alias – Abkürzungen für Git-Befehle
  97. 12.5 Branches als temporäre Zeiger auf Commits nutzen
  98. 12.6 Commits auf einen anderen Branch verschieben
  99. 13 Workflow-Einführung
  100. 13.1 Warum Workflows?
  101. 13.2 Welche Workflows sind wann sinnvoll?
  102. 13.3 Aufbau der Workflows
  103. 14 Ein Projekt aufsetzen
  104. Überblick
  105. Voraussetzungen
  106. Ein Projekt aufsetzen
  107. 14.1 Ablauf und Umsetzung
  108. 14.2 Warum nicht anders?
  109. 15 Gemeinsam auf einem Branch entwickeln
  110. Überblick
  111. Voraussetzungen
  112. Workflow kompakt
  113. Gemeinsam auf einem Branch entwickeln
  114. 15.1 Ablauf und Umsetzung
  115. 15.2 Warum nicht anders?
  116. 16 Mit Feature-Branches entwickeln
  117. Überblick
  118. Voraussetzungen
  119. Mit Feature-Branches entwickeln
  120. 16.1 Ablauf und Umsetzung
  121. 16.2 Warum nicht anders?
  122. 17 Mit Bisection Fehler suchen
  123. Überblick
  124. Voraussetzungen
  125. Mit Bisection Fehler suchen
  126. 17.1 Ablauf und Umsetzung
  127. 17.2 Warum nicht anders?
  128. 18 Mit einem Build-Server arbeiten
  129. Überblick
  130. Voraussetzungen
  131. Mit einem Build-Server arbeiten
  132. 18.1 Ablauf und Umsetzung
  133. 18.2 Warum nicht anders?
  134. 19 Ein Release durchführen
  135. Überblick
  136. Voraussetzungen
  137. 19.1 Ablauf und Umsetzung
  138. 19.2 Warum nicht anders?
  139. 20 Große Projekte aufteilen
  140. Überblick
  141. Voraussetzungen
  142. Große Projekte aufteilen
  143. 20.1 Ablauf und Umsetzung
  144. 20.2 Warum nicht anders?
  145. 21 Kleine Projekte zusammenführen
  146. Überblick
  147. Voraussetzungen
  148. Kleine Projekte zusammenführen
  149. 21.1 Ablauf und Umsetzung
  150. 21.2 Warum nicht anders?
  151. 22 Lange Historien auslagern
  152. Überblick
  153. Voraussetzungen
  154. Lange Historien auslagern
  155. 22.1 Ablauf und Umsetzung
  156. 22.2 Warum nicht anders?
  157. 23 Andere Versionsverwaltungen parallel nutzen
  158. Überblick
  159. Voraussetzungen
  160. Andere Versionsverwaltungen parallel nutzen
  161. 23.1 Ablauf und Umsetzung
  162. 23.2 Warum nicht anders?
  163. 24 Ein Projekt nach Git migrieren
  164. Überblick
  165. Voraussetzungen
  166. Ein Projekt nach Git migrieren
  167. 24.1 Ablauf und Umsetzung
  168. 24.2 Warum nicht anders?
  169. 25 Was gibt es sonst noch?
  170. 25.1 Interaktives Rebasing – Historie verschönern
  171. 25.2 Umgang mit Patches
  172. 25.3 Patches per Mail versenden
  173. 25.4 Bundles – Pull im Offline-Modus
  174. 25.5 Archive erstellen
  175. 25.6 Grafische Werkzeuge für Git
  176. 25.7 Repository im Webbrowser anschauen
  177. 25.8 Zusammenarbeit mit Subversion
  178. 25.9 Aliase für Befehle
  179. 25.10 Notizen an Commits
  180. 25.11 Hooks – Git erweitern
  181. 25.12 Github – Hosting von Repositorys
  182. 26 Das sechsundzwanzigste Kapitel
  183. 27 Grenzen von Git
  184. 27.1 Hohe Komplexität
  185. 27.2 Komplizierter Umgang mit Submodulen
  186. 27.3 Ressourcenverbrauch bei großen binären Dateien
  187. 27.4 Repositorys können nur vollständig verwendet werden
  188. 27.5 Autorisierung nur auf dem ganzen Repository
  189. 27.6 Mäßige grafische Werkzeuge für Historienauswertung
  190. Anhänge
  191. »Schritt für Schritt«-Anleitungen
  192. Workflow-Verzeichnis
  193. Ein Projekt aufsetzen
  194. Seite 111
  195. Gemeinsam auf einem Branch entwickeln
  196. Seite 127
  197. Mit Feature-Branches entwickeln
  198. Seite 135
  199. Mit Bisection Fehler suchen
  200. Seite 153
  201. Mit einem Build-Server arbeiten
  202. Seite 165
  203. Ein Release durchführen
  204. Seite 179
  205. Große Projekte aufteilen
  206. Seite 191
  207. Kleine Projekte zusammenführen
  208. Seite 199
  209. Lange Historien auslagern
  210. Seite 205
  211. Andere Versionsverwaltungen parallel nutzen
  212. Seite 215
  213. Ein Projekt nach Git migrieren
  214. Seite 227
  215. Index

Product information

  • Title: Git, 2nd Edition
  • Author(s): René Preißel, Bjørn Stachmann
  • Release date: December 2013
  • Publisher(s): dpunkt
  • ISBN: 97833864901300