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
]