- Merge: Anwenden, wenn: der derzeitige Branch in Develop oder Master ist; die History mit der Timeline synchron bestehen soll; der derzeitige Branch schon Gemerged wurde.
- Rebase: Anwenden, wenn: ich an einem Feature arbeite, welches noch nicht in einen Branch Gemerged wurde; wenn ich eine saubere History will; mein Branch viele Commits besitzt; wenn ich einen Squash-Commit vorbereite.
## Vorlesung vom 28.11.2023
### Lernziel
- Warum Softwareentwicklung Teamarbeit benötigt
- Der Softwareentwicklungsprozess mit Einteilung, Versionierung, SCM, Integration, Builds und Bereitstellung
- Automatisierte Tests
- Vorgehensmodelle: gemeinsam (remote repository) und privat (fork)
### Erkenntnis
- Teamarbeit ist in der Softwareentwicklung besonders wichtig, da alles, was von einer einzigen Person programmiert werden kann schon gibt und das wichtige so kompliziert ist, dass es von einem Team erstellt werden muss, welches den Aufwand durch automatisierte Prozesse und das Konfliktpotential durch formale Prozesse lindert. Der Codeentwicklungsprozess besitzt viele Bestandteile, wie z.B die semantische Versionierung aus Major, Minor, Patch und Label als Kennzeichnungen für Änderung, oder die zentrale Verfügbarkeit in der Organisation und Zugriff, Überblick auf alle Code versionen und paralleler Entwicklung auf alle Features. Dann sprachen wir über die Probleme der Continuous Integration und der automatisierten Tests, worauf hin wir zu guter letzt über das remote repository und forking gesprochen haben.
### Wiederholung
- Remote Repository: Jeder Entwickler arbeitet gegen ein remeinsames remote repository; hat (Schreib-)Zugriff; kann dies einfach synchronisieren; und Zwischenstände für alle sichtbar machen
- Fork: Es gibt ein zentrales master repository; jeder entwickler hat sein eigenes seperates remote repository; jedes lokale repository hat 2 remote repositories, bestehend aus origin (lesend) und upstream (schreibrechte)