bg:
SE-Tutorium 4 | Mittwoch 16 - 18 Uhr:
anchored to [[191.00_anchor]]
Lernziele:
- Kennenlernen / Grundstimmung aufbauen
- git im Grundsatz verstehen
- Unterschied von Working / Staging / Commit
- Veränderungen vom Repository wahrnehmen ( status / log )
- Kommandos müssen nicht auswendig gelernt werden Konzept wichtig
- Forum navigieren können
- Fragen richtig stellen
- Terminal verstehen
- Git konfigurieren und verstehen
Im Tutorium Ankommen:
note: selbst vorstellen! ( akademische Interessen / außerhalb) Gemeinsam möchten wir SE bewältigen danach gute Software designen können! Ungefähre Übersicht aller Teilnehmenden
Wer hat zuvor schonmal mit Git oder Github gearbeitet?
- Wenn, was habt ihr damit gemacht?
note: selbst: Tastaturen, Notizen und Code-Projekte Git /Github also nicht nur für Coding sinnvoll! Abgaben oder Notizen kann man so auch praktisch erstellen und teilen
Habt ihr schonmal im Team programmiert?
- Wenn, was waren so eure Erfahrungen?
note: Ich kann meine Erfahrung teilen und somit etwas nähe schaffen.
(Tastaturen / kleine Software-Projekte / Team-Projekt letztes Semester
Grundlegende Informationen:
note: Übersicht über Sitzung:
Lernziele dieser Sitzung:
- Kennenlernen somewhat
- Forum navigieren können
- Fragen richtig stellen
- git im Grundsatz verstehen
- Unterschied von Working / Staging / Commit
- Veränderungen vom Repository wahrnehmen ( status / log )
- Kommandos müssen nicht auswendig gelernt werden Konzept wichtig
- Terminal verstehen
- Git konfigurieren und verstehen
note: (2min)
Idee von Software-Engineering Vorlesung:
- weniger Fokus auf Programmieren, mehr wie man im Team arbeitet und Software-Designed –>
- Wir wollen zuerst:
- Git und Kommandozeile
- und Interaktion mit Github lernen
note: ( 2 min ) Fokus-> Teamarbeit. besser teams finden!
Forum nutzen:
- https://ps-forum.cs.uni-tuebingen.de/ hat alle Infos!
- wo finden wir was?
note: (5min) Fragen beantworten, falls welche auftreten!
Fragen Stellen:
-
Gerne Fragen stellen!
-
helfen dem Lernprozess ungemein.
-
Es gibt quasi keine dummen Fragen.
-
Helfen euch und mir beim Verständnis von Dingen
Möglichkeiten Fragen zu stellen:
- hier im Tutorium!
- Forum bevorzugt
- Privatnachricht
- Fragen zur Vorlesung
note: (2 min)
Fragen stellen:
note:relevante Aspekte benennen -> Aus der Gruppe bekommen? -> Wissen darstellen, Frage spezifisch stellen –> Thema genau benennen -> eigene Suche zuvor anstellen ( nicht zu viel! )
Fragen stellen:
[!Info] Fragen stellen
![[Pasted image 20231024151738.png]]
note: Gibt es fragen?,Wenn nicht –> nächster
Wo liegt der Unterschied zwischen Software Engineering und Programmieren?
![[Pasted image 20231024151509.png]]
note: Kurze Diskussion halten und drüber sprechen
Terminal Verwenden:
-
Terminal grundlegend für Arbeit mit git
- GUIs - grafische Oberflächen - existieren
- git cli - command line interface - aber mächtiger!
-
Grundlegende Kommandos lernen / verstehen:
cd / ls / pwd
cp / mv / rm /
mkdir / touch
note: (20 min) demo geben, damit man auch mit arbeiten kann!
Terminal Verwenden | Aufgabe:
Gerne in kleinen Teams / zwei Personen! Erstellt im Terminal folgende Ordnerstruktur:
├── aufgabe │ └── hallo.md ├── downloads │ ├── uebung00.md │ └── uebung01.md └── material └── infoscmd.txt
anschließend:
- text in Konsole in hallo.md einfügen:
# Inhalt: Diese Nachricht wurde im Terminal geschrieben, hoffentlich!
- kopiere hallo.md nach “material” und benenne sie zu “uebung_cmd.txt” um
- lösche jetzt “uebung00.md” und “uebung01.md”
note: 20 min kleine Gruppenarbeit ( mit Nachbar zu zweit!)
Terminal Verwenden | Aufgabe:
Was macht“cd ~/Desktop“ bzw wofür steht “~/”?
Was bewirkt “cd ../”?
Wie öffnen / bearbeiten wir eine Datei im Terminal?
Funktionalität von GIT:
aufgeteilt in drei Stufen:
- Working Directory
- Staging Area
- Repository
![[Pasted image 20231024161502.png]]
note: folgend Betrachtung der Unterschiede, Anzeichnen!
Funktionalität von GIT | Beispiel:
- Apfel.md erzeugen, dann in Staging Area wie?
- Zimt.md erzeugen und lassen –> wo ist sie jetzt?
- Apfel.md ins Repository setzen –> Wie?
- Zimt.md bearbeiten und in Staging Area platzieren
- Zitrone.md erzeugen und in Staging Area setzen
- Zimt.md wieder aus Staging Area und commit machen
- Apfel.md bearbeiten und ins Repository setzen
- erste Version von Apfel.md wieder setzen (war Fehlerhaft)
note: write down and solve interactively
Wo liegt der Unterschied zwischen Staging Area und working copy?
note: give them around 1 - 2 min to think about it
Wo liegt der Unterschied zwischen staging area und repository?
note: give them around 1 - 2 min to think about it
Funktionalität von GIT - Commits:
- Commits stellen eine neue Version da
- commit message gibt an, was geändert wurde
- Daher sehr wichtig, sie gut zu benennen!
Was ist bei einem Commit wichtig?
note: around 5 min in total
Das Ganze, aber im Terminal
- Am Besten immer nach jedem Commando ausführen::
- git status –> was geht gerade ab?
- git log –oneline … –> wie sieht mein Repo aus?
Quality of Life (for many):
-
Standard-Editor auf Nano umstellen
- mit
git config --global core.editor "neuer editor"
- Infos: hier
- mit
-
git config –help
core.editor
> Commands such as commit and tag that let you edit messages by launching an editor use the value of this
> variable when it is set, and the environment variable GIT_EDITOR is not set. See git-var(1).
note: Standardmäßig VIM als default ( nutze ich auch gern), aber der kann schwer und verwirrend sein.
Working with Git Repositories:
- Nutzung von git diff, Wofür?
- Anschauen von test-repository!
note: open test repo! ,was können wir betrachten? Vorherige Betrachtung nochmal noch im Terminal anschauen! Datei erstellen, nicht im Repo? Checkout in anderen Branch -> warum ist sie immernoch da?
Hilfe mit GIT Finden:
- man-pages
git * --help
hilft immer! / fast- Stackoverflow
- git-book
- …
Weiterführende Fragen:
- Bedeutung von
git add -p
?- was passiert danach?
- was macht
git add -u
? git log -p
?- Unterschied zwischen:
mv ./tracked-file new-directory/tracked-file
- und:
git add new-directory/tracked-file
?
note: 10 - 15 min
Hausaufgabe 01:
-
Probleme?
-
Wo befinden sich die Aufgaben?
![[Pasted image 20231024215052.png]]
- alle Informationen auf meinem Github hochgeladen –> Link im Forum
- bei Fehlern gerne ein Issue erstellen (lernen wir noch!)
- Fragen ins Forum oder persönlich Fragen :)
- Repository mit meinen Folien und Beispielen! https://github.com/ScatteredDrifter/SE_tutorial_material
Vielen Dank für die Anwesenheit
note: Fragen -> Helpdesk nochmal anbieten?, gibt es Fragen zu den heutigen Inhalten? –> können wir nochmal anschauen