bg:

SE-Tutorium 4 | Mittwoch 16 - 18 Uhr:

anchored to [[191.00_anchor]]


Lernziele:

  1. Kennenlernen / Grundstimmung aufbauen
  2. git im Grundsatz verstehen
    1. Unterschied von Working / Staging / Commit
    2. Veränderungen vom Repository wahrnehmen ( status / log )
    3. Kommandos müssen nicht auswendig gelernt werden Konzept wichtig
  3. Forum navigieren können
  4. Fragen richtig stellen
  5. Terminal verstehen
  6. 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:

  1. Kennenlernen somewhat
  2. Forum navigieren können
  3. Fragen richtig stellen
  4. git im Grundsatz verstehen
    1. Unterschied von Working / Staging / Commit
    2. Veränderungen vom Repository wahrnehmen ( status / log )
    3. Kommandos müssen nicht auswendig gelernt werden Konzept wichtig
  5. Terminal verstehen
  6. 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:

  1. text in Konsole in hallo.md einfügen:
# Inhalt:
Diese Nachricht wurde im Terminal geschrieben, hoffentlich!
  1. kopiere hallo.md nach “material” und benenne sie zu “uebung_cmd.txt” um
  2. 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
  • 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?


## Feedback:

![[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