KBS-SoSe2023-Git-Grundkurs

Aus Fachschaft_Informatik
Zur Navigation springen Zur Suche springen

Dies ist der 5. Termin vom KunterBuntenSeminar im SS 2023.
Ort: G-022
Datum: 13. Juni
Zeit: 18:30 Uhr bis ca. 20:30 Uhr

tl;dr[Bearbeiten]

Workshop zu Git, der freien de-facto Standardsoftware zur verteilten Versionsverwaltung.

Was ist git eigentlich und wie funktioniert es? Eine Einführung zum mitmachen, bringt also gerne euren Rechner mit installiertem git mit.

Too Long Did Read[Bearbeiten]

Motivation[Bearbeiten]

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?[Bearbeiten]

Ä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?[Bearbeiten]

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-Kompatibel, also perfekt für Hausaufgaben, Ausarbeitungen und Abschlussarbeiten,
  • in jeder guten IDE (standardmäßig) unterstützt!

Was du lernen wirst[Bearbeiten]

  • 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?[Bearbeiten]

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)
    • Du kannst natürlich auch GitHub, GitLab, etc. nutzen
  • Konsole über die du git nutzen kannst (wir werden keine GUI-Tools nutzen!)
  • Bringe einen Laptop mit und installiere git darauf (egal ob Windows oder Linux, aber natürlich empfehle ich dir Linux ;) )

Vortragende[Bearbeiten]

Folien[Bearbeiten]

Aus Zeitgründen wahrscheinlich erneut mit den alten Folien (mal schauen): Medium:KBS-SoSe21-Git-Crashkurs.pdf

  1. Ja, diese Formulierung kommt nicht von mir, sondern von Walter ;)