KBS-WiSe2223-Git-Grundkurs: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 50: | Zeile 50: | ||
* Wie man die Historie durchsuchen kann (git log) | * Wie man die Historie durchsuchen kann (git log) | ||
Wozu wir (wahrscheinlich) nicht kommen werden: | '''Wozu wir (wahrscheinlich) ''nicht'' kommen werden:''' | ||
* Tagging | * Tagging |
Version vom 14. Januar 2023, 00:39 Uhr
Dies ist der 6. Termin vom KunterBuntenSeminar im WS 22/23.
Ort: G-022
Datum: 17. Januar
Zeit: 18:00 Uhr bis ca. 20:00 Uhr
tl;dr
Workshop zu Git, der freien de-facto Standardsoftware zur verteilten Versionsverwaltung.
Was ist git eigentlich und wie funktioniert es? Eine Einführung zum mitmachen.
Too Long Did Read
Motivation
Bist du es nicht auch leid, für deine Hausaufgaben ständig Dateien hin- und herzuschicken? Hast du schon mal in einer Präsentation etwas geändert und dich später geärgert, dass eine alte Version für immer verschollen ist? Hast du kurz vor der Abgabe eines Dokumentes wild zwischen "Abgabe_v20_fertig.pdf", "Abgabe_v21_neu.pdf", "Abgabe_v20-komplett.pdf" und "Abgabe_final_korrigiert.pdf" hin- und hergeschaut, um den letzten Stand ausfindig zu machen? Und hast dich schon mal gefragt, wie das überhaupt geht, dass dutzende Leute zusammen an einer Software arbeiten, wenn es doch ewig dauern würde, die einzelnen Codeschnipsel zusammenzutragen und ständig aktuell zu halten?
Dann hast du am kommenden Dienstagabend hoffentlich noch nichts vor, denn da erzähle ich dir und allen Genossen im Schmerz[1], welch schlaue Software die obigen Probleme löst: Git!
Was ist eine Versionsverwaltung?
Änderungen an Dateien werden mit Hilfe einer Versionsverwaltung in einzelnen Versionen abgespeichert, sodass man einfach zu älteren Ständen zurückspringen kann. Einzelne Arbeitsschritte gehen also nicht verloren und man braucht nie mehr tausend Dateien wie "Abgabe-V2_final_korrigiert-fertig.pdf" anlegen.
Typischerweise erlaubt eine Versionsverwaltung das erstellen paralleler Versionen. Stell dir vor du hast eine Datei "Abgabe.tex" und kopiert sie zu "Abgabe_B.tex". Bei der originalen Abgabe änderst du nun im ersten Kapitel etwas und bei "Abgabe_B" im zweiten Kapitel. Klingt erst mal sinnlos, aber vielleicht bist du dir noch nicht sicher, ob du die Änderungen in "Abgabe_B" wirklich beibehalten möchtest und erstellt so erst mal eine Art Sicherung.
So in etwa arbeitet auch eine Versionsverwaltung, in dem verschiedene Stände deiner Arbeit parallel existieren können. So kann man verhindern, dass ungewollte oder fremde Änderungen deine Abgaben, Code oder sonstigen Dokumente kaputt machen.
Das halten paralleler Versionen lässt sich natürlich prima auf mehrere Rechner aufteilen, sodass mehrere Personen ihre eigenen Versionen eines Dokumentes halten und so parallel arbeiten können.
All das (und noch viel viel mehr) kann git.
Was ist git?
Git ist
- plattformunabhängig, klein, schnell und kostenlos,
- kein hacky Nieschen-Tool, sondern ein de-facto Standardwerkzeug, dass alle benutzen ... zumindest alle professionellen [Unternehmen|Entwickler|Hacker|Studis] zumindest ;)
- in den Basics einfach zu lernen,
- trotzdem unglaublich mächtig,
- 100% LaTeX[2]-Kompatibel, also perfekt für Hausaufgaben, Ausarbeitungen und Abschlussarbeiten,
- in jeder guten IDE (standardmäßig) unterstützt!
Was du lernen wirst
- Wie man Dateien in git hinzufügt und Änderungen einträgt (git add, git commit)
- Wie man Änderungen hoch- und runterlädt (git pull, git push)
- Wie man parallele Versionen ("branches") verwendet (git branch, git checkout, git merge)
- Wie man mit Konflikten innerhalb einer Datei umgeht und diese löst
- Wie man ein Repo fixt (aka "F*#K! Den commit wollte ich gar nicht pushen!!!" → git reset, git revert)
- Wie man Änderungen kurz zwischenspeichert (git stash)
- Wie man die Historie durchsuchen kann (git log)
Wozu wir (wahrscheinlich) nicht kommen werden:
- Tagging
- Tricks mit den Befehlsparametern (ja, "git log --graph --oneline --decorate --all" ist ganz toll, aber kann sich niemand am Anfang merken ;) )
- Konfiguration, Hooks, etc.
- Commits zwischen verschiedenen Repos austauschen
- Sub-Repos
- Forks, Pull-Requests/Merge-Requests
- Pipeline Geddöns von GitLab und Co
- Und auch die ethisch-moralischen und philosophisch-metaphysischen Überlegungen zur Bevorzugung von "rebase" gegenüber "merge" bleiben uns fürs erste verborgen
Was muss ich mitbringen?
Dieses KBS ist zum mitmachen gedacht. Am besten du bereitest dich vor:
- Mache dich mit git.mafiasi.de vertraut (zumindest solltest du dich dort anmelden können)
- Bringe einen Laptop mit und installiere git darauf (egal ob Windows oder Linux, aber natürlich empfehle ich dir Linux ;) )
Vortragende
- Hauke 14stieler
Folien
Gibt dieses mal vielleicht keine (neuen), mal schauen.
Folien vom letzten mal: Medium:KBS-SoSe21-Git-Crashkurs.pdf