diff --git a/Lerntagebuch.md b/Lerntagebuch.md index d169d7a..2cdffe8 100644 --- a/Lerntagebuch.md +++ b/Lerntagebuch.md @@ -102,6 +102,47 @@ Die Mikroebene hingegen befasst sich mit den kleineren Elementen des Systems (z. Ich habe im Internet nach weiteren Inhalten über Entwurfsmuster gesucht und wollte mehr darüber lesen. Ich habe [diese Website](https://refactoring.guru/) gefunden, die ich sehr gut finde. Sie hat auch einige visualisierte Erklärungen, die ich sehr gut finde. - --- +## 4. Vorlesung (14.11.2023) + +### Lernziel + +- Quellcode-Verwaltung (**S**ource **C**ode **M**anagement): + - Zentrales SCM + - Pro und Contra: + + | Pro | Contra | + | :----: | :----: | + | Verfügbarkeit von Commits für alle | keine Offline-Arbeit | + | einfache Speicherung/Wiederherstellung | branching und merging sofort für alle sichtbar | + + - verteiltes SCM + - Pro und Contra: + + | Pro | Contra | + | :----: | :----: | + | funktioniert ohne (permanenten) Netzzugang | kein Schutz gegen gleichzeitige Änderungen | + | kein zentraler Server notwendig | lokale Historie nicht synchronisiert | + + +- Git: + - Warum benutzen wir Git? + - Wie macht man eine Commit? + - Begriffe wie: Commit, Merge, Rebase + +### Erkenntnis + +Wir nutzen Git, um dauerhaften Zugriff auf den letzten funktionierenden Zustand zu haben, verschiedene Zustände (Produktion, Entwicklung, laufendes Feature) einzusehen und Änderungen im Laufe der Zeit oder zwischen Features/Branches zu vergleichen. +Bei Gruppenprojekten machen wir einen Commit, wenn das gesamte Projekt kompiliert ist, alle Tests bestanden sind, einzelne Refactoring-Schritte abgeschlossen und alle Merge/Rebase-Konflikte gelöst sind. Wir halten die Commits klein, weil sie in der Historie leichter zu finden und zu verfolgen sind. + +### Wiederholung + +**Branching**: Eine Kopie des aktuellen Repositorys, um an einer anderen Version zu arbeiten, ohne die ursprüngliche Version zu beeinflussen. +**Merge**: Fügt Änderungen aus einem Branch in den anderen ein. Erzeugt einen neuen Commit, der die Änderungen aus beiden Branches kombiniert. +**Rebase**: Fügt Änderungen aus einem Branch in einen anderen hinzu, indem die Commits aus dem ersten Branch auf dem zweiten Branch wiedergegeben werden. (z.B. ein anderer Kollege hat einige Änderungen am Master Branch vorgenommen und wir brauchen diese Änderungen in dem Branch, an dem wir gerade arbeiten, also führen wir einen Rebase durch, um die neueste Version des Masters in unserem Branch zu haben). + +### Kritik + Ich persönlich finde es einfacher, Konzepte mit einem visuellen Modell zu verstehen. Ich habe auf [dieser Website](https://learngitbranching.js.org/) eine visuelle Erklärung von Git gefunden und schlage vor, mehr visuelle Darstellungen in unsere Materialien aufzunehmen, um das Verständnis zu vertiefen. z.B. diese Folien mit visualisierten Formen waren für mich gut zu verstehen. :) + + ---