Git: verteilte Versionsverwaltung für Code und Dokumente
Gespeichert in:
Hauptverfasser: | , |
---|---|
Format: | Buch |
Sprache: | German |
Veröffentlicht: |
München
Open Source Press
2014
|
Ausgabe: | 2. Auflage |
Schlagworte: | |
Online-Zugang: | Inhaltsverzeichnis |
Beschreibung: | 336 Seiten graph. Darst. 240 mm x 176 mm |
ISBN: | 9783955391195 |
Internformat
MARC
LEADER | 00000nam a22000008c 4500 | ||
---|---|---|---|
001 | BV042273112 | ||
003 | DE-604 | ||
005 | 20170323 | ||
007 | t | ||
008 | 150115s2014 gw d||| |||| 00||| ger d | ||
020 | |a 9783955391195 |c Pb. : EUR 29.90 (DE), EUR 30.80 (AT), sfr 40.90 (freier Pr.) |9 978-3-95539-119-5 | ||
024 | 3 | |a 9783955391195 | |
035 | |a (OCoLC)900472429 | ||
035 | |a (DE-599)BVBBV042273112 | ||
040 | |a DE-604 |b ger |e rda | ||
041 | 0 | |a ger | |
044 | |a gw |c XA-DE-BY | ||
049 | |a DE-12 |a DE-11 |a DE-706 |a DE-91G |a DE-384 |a DE-29T |a DE-573 | ||
082 | 0 | |a 004 | |
084 | |a ST 230 |0 (DE-625)143617: |2 rvk | ||
084 | |a ST 232 |0 (DE-625)143619: |2 rvk | ||
084 | |a 004 |2 sdnb | ||
084 | |a DAT 304f |2 stub | ||
100 | 1 | |a Haenel, Valentin |e Verfasser |4 aut | |
245 | 1 | 0 | |a Git |b verteilte Versionsverwaltung für Code und Dokumente |c Valentin Haenel ; Julius Plenz |
250 | |a 2. Auflage | ||
264 | 1 | |a München |b Open Source Press |c 2014 | |
300 | |a 336 Seiten |b graph. Darst. |c 240 mm x 176 mm | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
650 | 0 | 7 | |a Git |g Software |0 (DE-588)7687494-1 |2 gnd |9 rswk-swf |
689 | 0 | 0 | |a Git |g Software |0 (DE-588)7687494-1 |D s |
689 | 0 | |5 DE-604 | |
700 | 1 | |a Plenz, Julius |e Verfasser |4 aut | |
856 | 4 | 2 | |m Digitalisierung UB Augsburg - ADAM Catalogue Enrichment |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=027710640&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
999 | |a oai:aleph.bib-bvb.de:BVB01-027710640 |
Datensatz im Suchindex
_version_ | 1804152833481637888 |
---|---|
adam_text | Inhaltsverzeichnis
Vorwort 11
I Grundlagen 17
1 Einführung und erste Schritte 19
1.1 Grundbegriffe............................................... 19
1.2 Erste Schritte mit Git...................................... 22
1.2.1 Das erste Repository................................. 22
1.2.2 Der erste Commit..................................... 23
1.2.3 Commits einsehen..................................... 25
1.3 Git konfigurieren........................................... 27
1.3.1 Git Aliase........................................... 28
1.3.2 Farbe einstellen..................................... 29
1.3.3 Zeichensätze einstellen.............................. 29
1.3.4 Zeilenenden einstellen............................... 30
1.3.5 Editor, Pager und Browser einstellen................. 30
1.3.6 Konfiguration über Umgebungsvariablen................ 31
1.3.7 Automatische Fehlerkorrektur......................... 32
2 Grundlagen 33
2.1 Git-Kommandos............................................... 33
2.1.1 Index................................................ 34
2.1.2 Commits schrittweise erstellen....................... 36
Inhaltsverzeichnis
2.1.3 Commits erstellen.................................... 41
2.1.4 Dateien verschieben und löschen...................... 44
2.1.5 grep auf einem Repository............................ 45
2.1.6 Die Projektgeschichte untersuchen.................... 46
2.1.7 Commit-Ranges....................................... 49
2.1.8 Unterschiede zwischen Commits........................ 50
2.2 Das Objektmodell............................................ 50
2.2.1 SHA-1 ֊ der sichere Hash-Algorithmus................. 51
2.2.2 Die Git-Objekte...................................... 52
2.2.3 Die Objektdatenbank.................................. 54
2.2.4 Die ObjektdatenÖank untersuchen...................... 55
2.2.5 Deduplication........................................ 57
2.2.6 Die Graph-Struktur................................... 58
3 Praktische Versionsverwaltung 61
3.1 Referenzen: Branches und Tags............................... 61
3.1.1 HEAD und andere symbolische Referenzen............... 64
3.1.2 Branches verwalten................................... 66
3.1.3 Tags - Wichtige Versionen markieren.................. 70
3.2 Versionen wiederherstellen.................................. 76
3.2.1 Detached HEAD........................................ 77
3.2.2 Commits rückgängig machen............................ 78
3.2.3 Reset und der Index.................................. 80
3.3 Branches zusammenführen: Merges............................. 82
3.3.1 Zwei Branches verschmelzen........................... 83
3.3.2 Fast-Forward-Merges: Einen Branch vorspulen.......... 85
3.3.3 Merge-Strategien..................................... 87
3.3.4 Optionen für die recursive-Strategie................. 89
3.4 Merge-Konflikte lösen....................................... 90
3.4.1 Hilfe beim Merge: mergetool.......................... 95
4
Inhaltsverzeichnis
3.4.2 rerere: Reuse Reeorded Resolution....................... 96
3.4.3 Konflikte vermeiden..................................... 98
3.5 Einzelne Commits übernehmen: Cherry-Pick...................... 100
3.6 Visualisierung von Repositories............................... 101
3.6.1 Revision Parameters.................................... 101
3.6.2 Gitk................................................... 104
3.7 Reflog........................................................ 106
4 Fortgeschrittene Konzepte 109
4.1 Commits verschieben ֊ Rebase.................................. 109
4.1.1 Ein Beispiel........................................... 111
4.1.2 Erweiterte Syntax und Konflikte........................ 112
4.1.3 Warum Rebase sinnvoll ist.............................. 113
4.1.4 Wann Rebase nicht sinnvoll ist - Rebase vs. Merge.... 114
4.1.5 Ein Wort der Warnung................................... 115
4.1.6 Code-Dopplungen vermeiden.............................. 116
4.1.7 Patch-Stacks verwalten................................. 116
4.1.8 Rebase einschränken mit —onto.......................... 117
4.1.9 Einen Commit verbessern................................ 118
4.1.10 Rebase feinjustieren.................................. 118
4.2 Die Geschichte umschreiben - Interaktives Rebase.............. 120
4.2.1 Kleine Fehler korrigieren: Bug Squashing............... 122
4.2.2 Commits beliebig editieren............................. 123
4.3 Wer hat diese Änderungen gemacht? - git blame.............. 125
4.3.1 Blame grafisch......................................... 126
4.4 Dateien ignorieren............................................ 127
4.4.1 Syntax für Muster...................................... 127
4.4.2 Nachträglich ignorieren oder versionieren.............. 129
4.4.3 Ignorierte und unbekannte Dateien löschen.............. 129
4.5 Veränderungen auslagern - git stash........................... 130
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------!
_________________________________________________________________________________________________________________________{_______________________________________________i
5
4.5.1 Grundlegende Benutzung............................... 130
4.5.2 Konflikte lösen...................................... 131
4.5.3 Wenn Sie den Stash nicht anwenden können............. 131
4.5.4 Nachricht anpassen................................... 132
4.5.5 Stashes einsehen.................................... 133
4.5.6 Stashes löschen...................................... 134
4.5.7 Wie ist der Stash implementiert?..................... 134
4.6 Commits annotieren - git notes............................. 135
4.7 Mehrere Root-Commits....................................... 137
4.8 Regressionen finden - git bisect........................... 138
4.8.1 Benutzung....!....................................... 139
4.8.2 Automatisierung...................................... 139
5 Verteiltes Git 141
5.1 Wie funktioniert verteilte Versionsverwaltung?........... 142
5.2 Repositories klonen....................................... 143
5.2.1 Repository-URLs...................................... 145
5.2.2 Remote-Tracking-Branches............................. 146
5.3 Commits herunterladen...................................... 148
5.3.1 git fetch............................................ 149
5.3.2 git pull............................................. 152
5.3.3 git fetch vs. git pull............................... 155
5.4 Commits hochladen: git push................................ 158
5.4.1 Remote-Referenzen löschen............................ 160
5.4.2 Push ohne Argumente: push.default.................... 160
5.4.3 Konfiguration des Upstream-Branches.................. 161
5.5 Remotes untersuchen........................................ 162
5.5.1 Zusammenfassung eines Remotes........................ 162
5.5.2 Vergleich mit dem Upstream........................... 163
5.6 Verteilter Workflow mit mehreren Remotes................... 164
5.7 Remotes verwalten........................................... 165
5.7.1 Pull-Request......................................... 166
5.8 Tags austauschen............................................ 167
5.8.1 Tags herunterladen................................... 167
5.8.2 Tags hoehladen....................................... 168
5.9 Patches per E-Mail.......................................... 169
5.9.1 Patches exportieren.................................. 170
5.9.2 Patches versenden.................................... 172
5.9.3 Patches einpflegen................................... 174
5.10 Ein verteilter, hierarchischer Workflow..................... 176
5.11 Unterprojekte verwalten.................................... 177
5.11.1 Submodules........................................... 178
5.11.2 Subtrees............................................. 180
5.11.3 Submodules vs. Subtrees.............................. 182
6 Workflows 185
6.1 Anwender.................................................... 186
6.2 Ein Branching-Modell........................................ 188
6.3 Releases-Management......................................... 192
6.3.1 Aufgaben sondieren................................... 192
6.3.2 Release erstellen.................................... 194
II Fortgeschrittene Szenarien 199
7 Git auf dem Server 201
7.1 Einen Git-Server hosten..................................... 201
7.1.1 Das Git-Protokoll.................................... 202
7.1.2 Repositories auf dem gleichen Rechner................ 203
7.1.3 Bare Repositories - Repositories ohne Working Tree ... 203
7.1.4 Zugriffsrechte eines Repositorys..................... 204
7.1.5 Zugriff per SSH: Die Git-Shell....................... 204
Inhaltsverzeichnis
..... HIIIIWJ
7.1.6 Zugriff per SSH: Öffentliche Schlüssel................. 205
7.1.7 Beispiel: Zwei Nutzer wollen kollaborieren............. 205
7.2 Gitolite: Git einfach hosten.................................. 206
7.2.1 Gitolite installieren.................................. 2071
7.2.2 Gitolite-Konfiguration................................. 208
7.2.3 Eigentümer und Beschreibung............................ 210
7.2.4 Zugriffsrechte auf Datei- oder Branch-Ebene............ 210
7.2.5 Persönliche Namespaces................................. 212
7.2.6 Zugriffsregelung auf Dateiebene........................ 212
7.2.7 Aktionen explizit verbieten............................ 213՝
7.2.8 Sollte man Policies forcieren?......................... 214
7.3 Git-Daemon: Anonymer, lesender Zugriff........................ 214
7.3.1 Git-Daemon und Inetd................................... 215
7.3.2 Der Debian-Weg: Git-Daemon sv.......................... 216
7.3.3 Der Git-Daemon auf einem Produktivsystem............... 217
7.3.4 Über Gitolite exportierbare Repositories festlegen..... 218
7.4 Gitweb: Das integrierte Web-Frontend.......................... 219
7.4.1 Gitweb global installieren............................. 219
7.4.2 Gitweb und Apache...................................... 221
7.4.3 Gitweb und Lighttpd.................................... 221
7.5 CGit - CGI for Git............................................ 222
7.5.1 CGit und Apache und Lighttpd........................... 223
7.5.2 Konfiguration.......................................... 224
7.5.3 Einzelne Repositories speziell konfigurieren........... 226
7.5.4 Caching ausnutzen...................................... 227
8 Git automatisieren 229
8.1 Git-Attribute - Dateien gesondert behandeln................... 230
8.1.1 Filter: Smudge und Clean............................... 231
8.1.2 Keywords in Dateien.................................... 231
__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________i
_______________________________________________________________________________________________________________________________________________!
______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________j
..........................................................................................................................................................................................;
I
Inhaltsverzeichnis
________ .. · —....... .... - ■»»mim..— „i ui ..nua ■■■,..»֊--1 1 ■»■■.■•»ui -
^8ww,i ,u 1 - .......՛
8.1.3 Eigene Diff-Programme............................... 233
8.2 Hooks...................................................... 236
8.2.1 Commits............................................. 237
8.2.2 Serverseitig........................................ 239
8.2.3 Patches anwenden.................................... 242
8.2.4 Sonstige Hooks...................................... 242
8.3 Eigene Git-Kommandos schreiben............................. 244
8.3.1 Initialisierung..................................... 245
8.3.2 Position im Repository.............................. 246
8.3.3 Referenzen auflisten: rev-list...................... 247
8.3.4 Änderungen finden................................... 248
8.3.5 Die Objektdatenbank und rev-parse................... 249
8.3.6 Referenzen iterieren: for-each-ref.................. 252
8.3.7 Referenzen umschreiben: git update-ref.............. 254
8.3.8 Erweiterte Aliase................................... 255
8.4 Versionsgeschichte umschreiben............................. 256
8.4.1 Sensitive Informationen nachträglich entfernen...... 258
8.4.2 Unterverzeichnis extrahieren........................ 260
8.4.3 Grafts: Nachträgliche Merges........................ 261
8.4.4 Alte Commits löschen................................ 262
9 Zusammenspiel mit anderen Versionsverwaltungssystemen 265
9.1 Subversion................................................. 266
9.1.1 Konvertierung....................................... 267
9.1.2 Bidirektionale Kommunikation........................ 277
9.2 Eigene Importer............................................ 284
III Anhang 289
A Installation 291
A.1 Linux...................................................... 291
imM
MSMH
tm
_________________________________________________________________________________________________i
¡saaamafft
9
І Inhaltsverzeichnis
А.1.1 Debian/Ubuntu..............
А. 1.2 Fedora....................
А. 1.3 Gentoo....................
А. 1.4 Installation aus den Quellen
A.2 Mac OS X..........................
A.3 Windows...........................
В Struktur eines Repositorys
B.1 Aufräumen...........
B.2 Performance.........
291
292
29C
29;
29^
29^
29E
297։
29®
C Shell-Integration j 3011
C.1 Git und die Bash........................................ 302!
C.1.1 Completion.......................................... 302
C.1.2 Prompt.............................................. 304
C.2 Git und die Z-Shell....................................... 307
C.2.1 Completion......................................... 307
C.2.2 Prompt.............................................. 310
D Github 315
Index 323
10
|
any_adam_object | 1 |
author | Haenel, Valentin Plenz, Julius |
author_facet | Haenel, Valentin Plenz, Julius |
author_role | aut aut |
author_sort | Haenel, Valentin |
author_variant | v h vh j p jp |
building | Verbundindex |
bvnumber | BV042273112 |
classification_rvk | ST 230 ST 232 |
classification_tum | DAT 304f |
ctrlnum | (OCoLC)900472429 (DE-599)BVBBV042273112 |
dewey-full | 004 |
dewey-hundreds | 000 - Computer science, information, general works |
dewey-ones | 004 - Computer science |
dewey-raw | 004 |
dewey-search | 004 |
dewey-sort | 14 |
dewey-tens | 000 - Computer science, information, general works |
discipline | Informatik |
edition | 2. Auflage |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>01598nam a22004098c 4500</leader><controlfield tag="001">BV042273112</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20170323 </controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">150115s2014 gw d||| |||| 00||| ger d</controlfield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9783955391195</subfield><subfield code="c">Pb. : EUR 29.90 (DE), EUR 30.80 (AT), sfr 40.90 (freier Pr.)</subfield><subfield code="9">978-3-95539-119-5</subfield></datafield><datafield tag="024" ind1="3" ind2=" "><subfield code="a">9783955391195</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)900472429</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)BVBBV042273112</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">rda</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">ger</subfield></datafield><datafield tag="044" ind1=" " ind2=" "><subfield code="a">gw</subfield><subfield code="c">XA-DE-BY</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-12</subfield><subfield code="a">DE-11</subfield><subfield code="a">DE-706</subfield><subfield code="a">DE-91G</subfield><subfield code="a">DE-384</subfield><subfield code="a">DE-29T</subfield><subfield code="a">DE-573</subfield></datafield><datafield tag="082" ind1="0" ind2=" "><subfield code="a">004</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 230</subfield><subfield code="0">(DE-625)143617:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 232</subfield><subfield code="0">(DE-625)143619:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">004</subfield><subfield code="2">sdnb</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">DAT 304f</subfield><subfield code="2">stub</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Haenel, Valentin</subfield><subfield code="e">Verfasser</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Git</subfield><subfield code="b">verteilte Versionsverwaltung für Code und Dokumente</subfield><subfield code="c">Valentin Haenel ; Julius Plenz</subfield></datafield><datafield tag="250" ind1=" " ind2=" "><subfield code="a">2. Auflage</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">München</subfield><subfield code="b">Open Source Press</subfield><subfield code="c">2014</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">336 Seiten</subfield><subfield code="b">graph. Darst.</subfield><subfield code="c">240 mm x 176 mm</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Git</subfield><subfield code="g">Software</subfield><subfield code="0">(DE-588)7687494-1</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">Git</subfield><subfield code="g">Software</subfield><subfield code="0">(DE-588)7687494-1</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="700" ind1="1" ind2=" "><subfield code="a">Plenz, Julius</subfield><subfield code="e">Verfasser</subfield><subfield code="4">aut</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">Digitalisierung UB Augsburg - ADAM Catalogue Enrichment</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=027710640&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="999" ind1=" " ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-027710640</subfield></datafield></record></collection> |
id | DE-604.BV042273112 |
illustrated | Illustrated |
indexdate | 2024-07-10T01:17:00Z |
institution | BVB |
isbn | 9783955391195 |
language | German |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-027710640 |
oclc_num | 900472429 |
open_access_boolean | |
owner | DE-12 DE-11 DE-706 DE-91G DE-BY-TUM DE-384 DE-29T DE-573 |
owner_facet | DE-12 DE-11 DE-706 DE-91G DE-BY-TUM DE-384 DE-29T DE-573 |
physical | 336 Seiten graph. Darst. 240 mm x 176 mm |
publishDate | 2014 |
publishDateSearch | 2014 |
publishDateSort | 2014 |
publisher | Open Source Press |
record_format | marc |
spelling | Haenel, Valentin Verfasser aut Git verteilte Versionsverwaltung für Code und Dokumente Valentin Haenel ; Julius Plenz 2. Auflage München Open Source Press 2014 336 Seiten graph. Darst. 240 mm x 176 mm txt rdacontent n rdamedia nc rdacarrier Git Software (DE-588)7687494-1 gnd rswk-swf Git Software (DE-588)7687494-1 s DE-604 Plenz, Julius Verfasser aut Digitalisierung UB Augsburg - ADAM Catalogue Enrichment application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=027710640&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis |
spellingShingle | Haenel, Valentin Plenz, Julius Git verteilte Versionsverwaltung für Code und Dokumente Git Software (DE-588)7687494-1 gnd |
subject_GND | (DE-588)7687494-1 |
title | Git verteilte Versionsverwaltung für Code und Dokumente |
title_auth | Git verteilte Versionsverwaltung für Code und Dokumente |
title_exact_search | Git verteilte Versionsverwaltung für Code und Dokumente |
title_full | Git verteilte Versionsverwaltung für Code und Dokumente Valentin Haenel ; Julius Plenz |
title_fullStr | Git verteilte Versionsverwaltung für Code und Dokumente Valentin Haenel ; Julius Plenz |
title_full_unstemmed | Git verteilte Versionsverwaltung für Code und Dokumente Valentin Haenel ; Julius Plenz |
title_short | Git |
title_sort | git verteilte versionsverwaltung fur code und dokumente |
title_sub | verteilte Versionsverwaltung für Code und Dokumente |
topic | Git Software (DE-588)7687494-1 gnd |
topic_facet | Git Software |
url | http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=027710640&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT haenelvalentin gitverteilteversionsverwaltungfurcodeunddokumente AT plenzjulius gitverteilteversionsverwaltungfurcodeunddokumente |