Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Versionsverwaltung mit git: Warum und wie. Erstsemester-Einführung Informatik, 01.10.2018 1 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen 2 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Wer sind wir? I Hochschulgruppe an der TU (gegründet 2014, ca. 8 P.) I Studierende (TU, HTW) und andere Leute I Hochschulen als Zielgruppe (Multiplikationswirkung) und Arbeitsfeld (Räume, Strukturen) 3 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Wer sind wir? I Hochschulgruppe an der TU (gegründet 2014, ca. 8 P.) I Studierende (TU, HTW) und andere Leute I Hochschulen als Zielgruppe (Multiplikationswirkung) und Arbeitsfeld (Räume, Strukturen) I Bisherige Projekte I I I I I Linux-Install-Party, Linux-Presentation-Day Verschlüsselungsgewinnspiel Monatliche Sprechstunde zu LATEX u.a. Formulierung eines Programmpapiers „Uni-Stick“: 130 × 8 GB mit freier Software 3 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Warum machen wir das? Aus Überzeugung! I Überzeugung 1: freie und quelloffene Software ist (oft) besser (technische + nicht technische Argumente) 4 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Warum machen wir das? Aus Überzeugung! I Überzeugung 1: freie und quelloffene Software ist (oft) besser (technische + nicht technische Argumente) I Überzeugung 2: öffentlich finanzierte wissenschaftliche Inhalte (AutorInnen, GutachterInnen) sollten nicht von öffentlich finanzierten Bibliotheken für horrende Summen von Zeitschriften-Verlagen gekauft werden müssen 4 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Projekt Uni-Stick (3. Auflage) I 4000 Flyer in Ersti-Tüten: Gutscheine für 8 GB Stick mit freier Software fürs Studium, ≈ 800 A C vom StuRa für 130 Stk. I Live-Linux / freie Windows-Programme 5 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Projekt Uni-Stick (3. Auflage) I 4000 Flyer in Ersti-Tüten: Gutscheine für 8 GB Stick mit freier Software fürs Studium, ≈ 800 A C vom StuRa für 130 Stk. I Live-Linux / freie Windows-Programme I Hat viel Arbeit gemacht 5 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Projekt Uni-Stick (3. Auflage) I 4000 Flyer in Ersti-Tüten: Gutscheine für 8 GB Stick mit freier Software fürs Studium, ≈ 800 A C vom StuRa für 130 Stk. I Live-Linux / freie Windows-Programme I Hat viel Arbeit gemacht I Ist gut angekommen (ca. 250 TN) 5 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Zukunftsideen I I Fortführung „Uni-Stick“ Studierende zum Nutzen/Verbessern freier Software animieren I I I I I Mehr Blog-Beiträge Kurse (LATEX/ Python / Git / Inkscape / . . . ) Infrastruktur-Stipendium OpenSource-Wettbewerb/Preis ... I Aufmerksamkeit erzeugen / Lobby-Arbeit („Landesverträge“) I Vernetzung mit anderen Städten 6 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Weitere Informationen https://fsfw-dresden.de/  uni-stick      blog      newsletter mitmachen      fork      git-ws 7 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen 8 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Gliederung Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen 9 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Warum Versionsverwaltung? I Projekte bestehen aus schrittweisen Änderungen I Bedürfnis, zu vorherigem Zustand zurückkehren zu können I („Savegame“) I Naiver Ansatz: I Probleme: I I I Speicherplatz Fehlende Übersicht Skaliert nicht (Teamwork) 10 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Warum Git? (1) I Lösung 1: zentrale Versionsverwaltung I I CVS (1986), SVN (2000) Idee: Zentrales Repositorium und Arbeitskopien SVN Repo Arbeitskopie 1 Arbeitskopie 3 Arbeitskopie 2 I Probleme: I I Abhängig von Server-Erreichbarkeit Performanz 11 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Warum Git? (2) I Lösung 2: dezentrale Versionsverwaltung I I mercurial (2005), bazaar (2005) git (2005) Idee: Jeder hat ein vollwertiges Repositorium Git Repo 1 Git Repo 2 I Git Repo 3 Vorteile: I I I Alle Operationen lokal → schnell, unabhängig Einfaches „branching“ und „merging“ ... 12 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Warum Git? (3) 13 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Warum Git? (3) Gefühlter Grad der Verbreitung: Git vs SVN 13 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Warum Git? (3) Gefühlter Grad der Verbreitung: Git vs SVN Seit 2016: Git = ˆ defacto Standard 13 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Einführung in git – Was ist ein Repo? HEAD master A Start B Nachfolger C Nach-Nachfolger I gerichteter, azyklischer Graph von Versionen (revisions) einer Ordnerstruktur und deren Inhalt mit Metadaten (Commit-ID, Autor, Beschreibungstext) I Commit-ID abgeleitet aus dem Inhalt und dem Graphen (kryptographische Hash-Funktion) 14 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Einführung in git – Was ist ein Repo? HEAD master A Start B Nachfolger C I gerichteter, azyklischer Graph von Versionen (revisions) einer Ordnerstruktur und deren Inhalt mit Metadaten (Commit-ID, Autor, Beschreibungstext) I Commit-ID abgeleitet aus dem Inhalt und dem Graphen (kryptographische Hash-Funktion) Nach-Nachfolger Beispiel: b52c95e791e1dac76b7f70292e366de7caa76178 I HEAD: Knoten im Graphen; momentaner Bezugspunkt für Operationen I refs: referenzieren Knoten im Graphen (Beispiele: HEAD, HEADˆ3, master, my_branch, b52c95e (abgekürzte Commit-ID)) 14 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Einführung in git – Was ist ein Repo? HEAD master A Start B Nachfolger C I gerichteter, azyklischer Graph von Versionen (revisions) einer Ordnerstruktur und deren Inhalt mit Metadaten (Commit-ID, Autor, Beschreibungstext) I Commit-ID abgeleitet aus dem Inhalt und dem Graphen (kryptographische Hash-Funktion) Nach-Nachfolger Beispiel: b52c95e791e1dac76b7f70292e366de7caa76178 I HEAD: Knoten im Graphen; momentaner Bezugspunkt für Operationen I refs: referenzieren Knoten im Graphen (Beispiele: HEAD, HEADˆ3, master, my_branch, b52c95e (abgekürzte Commit-ID)) 14 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Einführung in git – Was ist ein Repo? HEAD master A Start B Nachfolger C I gerichteter, azyklischer Graph von Versionen (revisions) einer Ordnerstruktur und deren Inhalt mit Metadaten (Commit-ID, Autor, Beschreibungstext) I Commit-ID abgeleitet aus dem Inhalt und dem Graphen (kryptographische Hash-Funktion) Nach-Nachfolger Beispiel: b52c95e791e1dac76b7f70292e366de7caa76178 index working tree I HEAD: Knoten im Graphen; momentaner Bezugspunkt für Operationen I refs: referenzieren Knoten im Graphen (Beispiele: HEAD, HEADˆ3, master, my_branch, b52c95e (abgekürzte Commit-ID)) 14 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Einführung in git – Verwendung I Wir empfehlen: git Bedienung via Kommandozeile I Syntax: git [] I Beispiele: I I I I git git git git init add myscript.py commit -m "add basic functionality" push 15 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Einführung in git – Verwendung I Wir empfehlen: git Bedienung via Kommandozeile I Syntax: git [] I Beispiele: I I I I I I I I I I I I git git git git init add myscript.py commit -m "add basic functionality" push git git git git git git git git status log branch develop checkout master merge develop blame myscript.py diff difftool 15 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Einführung in git – Verwendung I Wir empfehlen: git Bedienung via Kommandozeile I Syntax: git [] I Beispiele: I I I I I I I I I I I I git git git git init add myscript.py commit -m "add basic functionality" push git git git git git git git git status log branch develop checkout master merge develop blame myscript.py diff difftool I I I I I git clone git help git rebase git config gitk 15 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Praxis 1: Erste Schritte I Konfiguration anpassen I I I I Eigenes Repo foo erstellen I I I I git config --global user.email "foo@bar.de" git config --global user.name "Your Name" ... mkdir foo cd foo git init Alternativ: Bestehenedes Repo klonen I git clone 16 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Praxis 1: Erste Schritte I Konfiguration anpassen I I I I Eigenes Repo foo erstellen I I I I mkdir foo cd foo git init Alternativ: Bestehenedes Repo klonen I I git config --global user.email "foo@bar.de" git config --global user.name "Your Name" ... git clone Hintergrund: Wo speichert git die relevanten Informationen? → Verstecktes Verzeichnis .git 16 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Theorie: typischer Ablauf / „staging area“ (1) 17 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Theorie: typischer Ablauf / „staging area“ (2) git add working tree git commit index git push local repository remote repository Wozu zweiphasiger Commit-Prozess? I Ermöglicht präzise, hoch aufgelöste Commits I I I Änderungen mancher Dateien (git add dir1/*.html) Nur bestimmte Änderungen einer Datei (git add -p) Alle Änderungen übernehmen und comitten (git commit -a) ⇒ nachvollziehbare, aussagekräftige Commit-History 18 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Praxis: minimales Repo I Inhalt erzeugen I I I I I I printf "Hallo\nWelt\n" > README.md git status Tipp: Auto-Vervollständigung mit TAB git add README.md git status git commit -m "New content of README" git status 19 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Praxis: minimales Repo I Inhalt erzeugen I I I I I I I printf "Hallo\nWelt\n" > README.md git status Tipp: Auto-Vervollständigung mit TAB git add README.md git status git commit -m "New content of README" git status Änderungen durchführen, anzeigen und committen I I sed -i -- "s/Welt/Leute/g" README.md git diff 19 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Praxis: minimales Repo I Inhalt erzeugen I I I I I I I printf "Hallo\nWelt\n" > README.md git status Tipp: Auto-Vervollständigung mit TAB git add README.md git status git commit -m "New content of README" git status Änderungen durchführen, anzeigen und committen I I sed -i -- "s/Welt/Leute/g" README.md git diff 19 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Praxis: minimales Repo I Inhalt erzeugen I I I I I I I printf "Hallo\nWelt\n" > README.md git status Tipp: Auto-Vervollständigung mit TAB git add README.md git status git commit -m "New content of README" git status Änderungen durchführen, anzeigen und committen I I I sed -i -- "s/Welt/Leute/g" README.md git diff git commit -am "change Hello-message" 19 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Praxis: minimales Repo I Inhalt erzeugen I I I I I I I Änderungen durchführen, anzeigen und committen I I I I printf "Hallo\nWelt\n" > README.md git status Tipp: Auto-Vervollständigung mit TAB git add README.md git status git commit -m "New content of README" git status sed -i -- "s/Welt/Leute/g" README.md git diff git commit -am "change Hello-message" Sich Überblick verschaffen I I I git status git log gitk 19 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Theorie: Branches A I HEAD B master C Unkompliziertes paralleles Arbeiten an verschieden Versionen 20 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Theorie: Branches A HEAD B master C I Unkompliziertes paralleles Arbeiten an verschieden Versionen I Der aktive Branch folgt HEAD 20 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Theorie: Branches A HEAD B master C bugfix D I Unkompliziertes paralleles Arbeiten an verschieden Versionen I Der aktive Branch folgt HEAD I beliebig viele Branches möglich E 20 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Theorie: Branches A I Unkompliziertes paralleles Arbeiten an verschieden Versionen I Der aktive Branch folgt HEAD I beliebig viele Branches möglich I Branch/Revision wechseln: git checkout bugfix B C master bugfix D E HEAD 20 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Theorie: Branches A HEAD master I Unkompliziertes paralleles Arbeiten an verschieden Versionen I Der aktive Branch folgt HEAD I beliebig viele Branches möglich I Branch/Revision wechseln: git checkout master B C bugfix D E 20 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Theorie: Branches A I Unkompliziertes paralleles Arbeiten an verschieden Versionen I Der aktive Branch folgt HEAD I beliebig viele Branches möglich I Branch/Revision wechseln: git checkout bugfix B C master bugfix D E HEAD 20 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Theorie: Branches A B master C bugfix I Unkompliziertes paralleles Arbeiten an verschieden Versionen I Der aktive Branch folgt HEAD I beliebig viele Branches möglich I Branch/Revision wechseln: git checkout HEAD D E 20 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Theorie: Branches A B master C bugfix HEAD I Unkompliziertes paralleles Arbeiten an verschieden Versionen I Der aktive Branch folgt HEAD I beliebig viele Branches möglich I Branch/Revision wechseln: git checkout I neuer Branch auf HEAD erstellen: git checkout -b experiment experiment D E 20 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Theorie: Branches A I Unkompliziertes paralleles Arbeiten an verschieden Versionen I Der aktive Branch folgt HEAD I beliebig viele Branches möglich I Branch/Revision wechseln: git checkout I neuer Branch auf HEAD erstellen: git checkout -b experiment B master C bugfix HEAD D E experiment F G 20 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Theorie: Zusammenfassung Branches A B master C bugfix HEAD D E experiment F Branches sind lokale Lesezeichen auf Knoten im Revisionsgraphen. Beim Anlegen eines neuen Commits folgt der aktive Branch dem neuen HEAD. G 21 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Theorie: Mergen – Zusammenführen von Zweigen A master I Fall 1: Fast-Forward B C D bugfix E HEAD 22 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Theorie: Mergen – Zusammenführen von Zweigen A I Fall 1: Fast-Forward I master B HEAD C git checkout master D bugfix E 22 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Theorie: Mergen – Zusammenführen von Zweigen I A Fall 1: Fast-Forward I I B git checkout master git merge bugfix C D bugfix E master HEAD 22 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Theorie: Mergen – Zusammenführen von Zweigen I A Fall 1: Fast-Forward I I B C I E Fall 2: Parallele Zweige I master D F git checkout master git merge bugfix git checkout master bugfix HEAD 22 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Theorie: Mergen – Zusammenführen von Zweigen I A Fall 1: Fast-Forward I I B C I E git checkout master git merge bugfix Fall 2: Parallele Zweige git checkout master git merge bugfix ⇒ Erzeugung eines „Merge-Commits“ I I D master F bugfix H HEAD 22 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Theorie: Mergen – Zusammenführen von Zweigen I A Fall 1: Fast-Forward I I B C I E git checkout master git merge bugfix Fall 2: Parallele Zweige git checkout master git merge bugfix ⇒ Erzeugung eines „Merge-Commits“ I Automatische Konfliktlösung ziemlich gut I Gelegentlich manueller Eingriff notwendig I I D master H F bugfix HEAD 22 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Theorie: Mergen – Konflikte auflösen I Konflikte beim Mergen: beide Versionen werden in der Datei markiert eingefügt Gleiche Zeilen 1, <<<<<<< HEAD in unserem Zweig geänderte Zeilen, ======= im anderen Zweig geänderte Zeile, >>>>>>> other-branch Gleiche Zeilen 2 I manuell editieren um den Konflikt aufzuheben (z. B. beide Zeilen behalten, die Änderungen in beiden Zeilen zusammenführen, eine Version behalten), die Marker entfernen I git add I git commit 23 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Praxis I Bereitgestelltes nicht-trivials Repo: https://github.com/fsfw-dresden/git-ws-lyrik.git I Basis für verschiedene Aufgaben (Anregungen zum spielen) 1. Repo klonen git clone 2. Überblick verschaffen: gitk --all a) Wie viele Commits, Committer gibt es? b) Wie viele Branches? 3. Änderungen vornehmen a) zum Branch weimar wechseln b) in Datei gedichte/prometheus.md ’YYY’ durch ’ich’ ersetzen, c) committen d) analog im Branch london sonnets/text1.md ’XXX’ durch ’thee’ ersetzen 4. commit-History einzelner Dateien anzeigen a) git blame AUTHORS.md b) git blame sonnets/text1.md 24 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Praxis (2) 5. Änderungen anzeigen a) ... seit dem vorletzten Commit: git diff HEAD~ → beliebige Änderungen vornehmen b) ... seit dem letzten Commit: git diff c) Grafische diff-Anzeige: diff durch difftool ersetzen vorher: git config --global diff.tool meld (im PC-Pool schon X) oder: git config --global diff.tool kdiff3 6. Branch london in master mergen a) master auschecken: git checkout master b) merge durchführen: git merge london c) Ergebnis anschauen: gitk --all 25 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Praxis (3) 7. Irrelevante Dateien ignorieren a) sicherstellen, dass git status „working directory clean“ liefert b) Skript ausführen: python3 scripts/find-shortest-poem.py c) git status → Hilfsdateien bemerken (__pycache__) Häufig treten lokale Dateien auf, deren Änderungen nicht von git verfolgt werden sollen → Datei .gitignore hilft d) ignore-Datei ergänzen: printf "__pycache__" >> .gitignore e) Staus-Änderung zur Kenntnis nehmen: git status f) Committen: git commit -am "ignore python-bytecode-dir" g) Zur Kenntnis nehmen: git status → „working directory clean“ Hinweis: Inhalt der Datei .gitignore (nachprüfen): # This file specifies which files should not be tracked by git __pycache__ I Bedeutung der Zeilen 7.1 Erklärender Kommentar (stand vorher schon drin) 7.2 Ignoriere alle Dateien in Unterverzeichnissen namens __pycache__ 26 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Praxis (3) 8. Branch rom in master mergen a) b) c) d) merge durchführen → Konflikt zur Kenntnis nehmen Überblick verschaffen: git status gitk --all Manuell Konflikt in AUTHORS.md beheben Merge abschließen durch commiten der Änderungen: git commit --add -m "merge branch rom after manual conflict resolution" Weitere Ideen: I Eigenen Branch anlegen mit bestimmten Eltern-Knoten I I I I Commit-ID herausfinden: git log (ersten 4 Zeichen reichen) git checkout git checkout -b mybranch Rebase aller Branches, so dass repo linear wird I Hintergrundwissen: I I I git help rebase https://onlywei.github.io/... dort git rebase master eintippen, Animation anschauen und Text lesen 27 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Schlussbemerkungen (1) I github 6= git I I git: Freies Tool zur Versionsverwaltung github: Kommerzieller Webservice basierend auf git 28 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Schlussbemerkungen (1) I github 6= git I I I git: Freies Tool zur Versionsverwaltung github: Kommerzieller Webservice basierend auf git git nicht gut für (große) Binärdateien Merges werden ungemütlich (Binärdateien verwenden z. B. oft Offsets) I Grund: Delta-Kompression basiert auf zeilenweisen Diffs → .git-Verzeichnis wird ggf. sehr groß I 28 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Schlussbemerkungen (1) I github 6= git I I I git: Freies Tool zur Versionsverwaltung github: Kommerzieller Webservice basierend auf git git nicht gut für (große) Binärdateien Merges werden ungemütlich (Binärdateien verwenden z. B. oft Offsets) I Grund: Delta-Kompression basiert auf zeilenweisen Diffs → .git-Verzeichnis wird ggf. sehr groß I I Nicht behandelte wichtige Konzepte/Kommandos I I git fetch, git pull, git push, git rebase, ... Siehe Cheat-Sheet 28 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Schlussbemerkungen (1) I github 6= git I I I git: Freies Tool zur Versionsverwaltung github: Kommerzieller Webservice basierend auf git git nicht gut für (große) Binärdateien Merges werden ungemütlich (Binärdateien verwenden z. B. oft Offsets) I Grund: Delta-Kompression basiert auf zeilenweisen Diffs → .git-Verzeichnis wird ggf. sehr groß I I Nicht behandelte wichtige Konzepte/Kommandos I I I git fetch, git pull, git push, git rebase, ... Siehe Cheat-Sheet Weitere Tipps: I I I I Status-Infos im Bash-Prompt Aliase in .gitconfig (z.B.: git co → git checkout) Globale gitignore-Datei anlegen Bewährtes Branching-Modell anwenden 28 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Schlussbemerkungen (2): Blick übern Tellerrand I Umundu-Festival (01. - 06. Okt.) I I I I Festival für nachhaltige Entwicklung Fokus Thema 2018: „Utopien“ Filme, Vorträge, Workshops, ... https://umundu.de/ 29 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Schlussbemerkungen (2): Blick übern Tellerrand I Umundu-Festival (01. - 06. Okt.) I I I I I Festival für nachhaltige Entwicklung Fokus Thema 2018: „Utopien“ Filme, Vorträge, Workshops, ... https://umundu.de/ Kritische Einführungstage (08. - 18. Okt.) https://www.kreta-dresden.org/ I I I I Fahrrad-Standt-Rundgang Kritische Wissenschaft Klimawandel und Gesundheit (Kohle) ... 29 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Schlussbemerkungen (3) I Fragen? I Unterstützung: (im Rahmen unserer Möglichkeiten) I https://fsfw-dresden.de/sprechstunde https://fsfw-dresden.de/git-ws I kontakt@fsfw-dresden.de I 30 / 31 Warum Versionsverwaltung? Warum Git? Git Einführung (mit Praxis) Schlussbemerkungen Quellen und Links (Auswahl) I I I I https://git-scm.com/documentation https://git-scm.com/documentation/external-links https://stackoverflow.com/questions/tagged/git ... 31 / 31