Wir werden in diesem Git Projekt folgene Strategie der Branches benutzen
gitGraph
commit
branch sprint
branch cedric/1-git-lernen
commit
checkout sprint
branch jspahl/2-project-setup
commit
checkout sprint
merge jspahl/2-project-setup
checkout cedric/1-git-lernen
commit
checkout sprint
merge cedric/1-git-lernen
checkout main
merge sprint tag: "sprint-1"
Unser Hauptbranch wird main
sein von dort wird der sprint
branch erzeugt.
Nach jedem Sprint wird der sprint
-Branch in main
gemerged.
Für jedes Ticket wird ein neuer branch erstellt mit folgendem Namen: <bearbeiter>/<ticket-id>-<name-of-ticket>
.
für #2 z.b. jasper/2-project-setup
Unser Projekt ist wie folgt aufgebaut:
graph LR
data-->csv[temps.csv]
app-.->common
app[MaxTemp.App]-->logic[MaxTemp.Logic]
logic-->data[MaxTemp.Data]
logic-.->common
test[MaxTemp.UnitTest]-->logic
data-.->common[MaxTemp.Common]
test-.->common
play[MaxTemp.Playground]-->logic
play-->data
play-.->common
Die App ist die Hauptanwendung.
Sie ist für die Interaktion mit dem Benutzer zuständig.
Das heißt nur Daten ausgeben und Benutzereingaben entgegennehmen.
Alle anderen Aufgaben werden an die MaxTemp.Logic
weitergegeben.
Die Logic ist für die Logik der Anwendung zuständig.
Sie ist in der Lage die Daten aus der MaxTemp.Data
zu verarbeiten und auszugeben.
Die Data ist für die Datenhaltung zuständig.
Sie ist in der Lage Daten aus einer CSV Datei zu lesen.
Die Daten werden in einem List<T>
gespeichert.
Der Playground ist ein Projekt in dem wir unsere Ideen ausprobieren können. Er ist nicht Teil der Anwendung und wird im Endprodukt nicht vorhanden sein.
Der UnitTest ist für die Tests der Anwendung zuständig.
Das Common Projekt ist für alle gemeinsamen Klassen zuständig.
Git ist ein dezentrales Versionsverwaltungssystem. Es ist in der Lage Änderungen an Dateien zu verfolgen und zu speichern. Dadurch ist es möglich Änderungen an Dateien rückgängig zu machen oder zu vergleichen.
Hier sind nur die wichtigsten Informationen zu Git aufgelistet.
Weitere Informationen zu Git findest du in diesem Video (en). Ein Cheat Sheet findest du hier. Genaue Details findest du in der Dokumentation (en).
Mit dem Befehl git clone <url>
wird ein Git Repository heruntergeladen.
Mit dem Befehl git init
wird ein neues Git Repository erstellt.
Dieser Befehl sollte nur einmal pro Repository ausgeführt werden.
Mit dem Befehl git add <file>
wird eine Datei zum Index hinzugefügt.
Der Index ist eine Liste von Dateien die in den nächsten Commit aufgenommen werden sollen.
Mit dem Befehl git commit
wird ein neuer Commit erstellt.
Ein Commit ist eine Zusammenfassung von Änderungen an Dateien.
Ein Commit sollte immer nur eine Aufgabe erledigen.
Zum Beispiel: "Füge eine neue Methode hinzu" oder "Füge eine neue Klasse hinzu".
Falls sich beim Commiten vim öffnet kannst du mit :q!
schließen.
damit das nicht mehr passiert kannst du mit git config --global core.editor "nano"
den Editor ändern.
Um schnell einen Commit zu erstellen kannst du git commit -m "<message>"
benutzen.
Dabei ist <message>
die Commit Message.
Ich bin dafür das wir gitmoji :octocat: benutzen um die Commit Message zu schreiben.
Mit dem Befehl git status
wird der Status des Repositories angezeigt.
Es wird angezeigt welche Dateien geändert wurden und welche Dateien zum Index hinzugefügt wurden.
Mit dem Befehl git log
wird eine Liste aller Commits angezeigt.
Es werden die Commit ID, der Autor, das Datum und die Commit Message angezeigt.
Mit dem Befehl git diff
wird der Unterschied zwischen dem letzten Commit und dem aktuellen Stand angezeigt.
Es werden die Zeilen angezeigt die hinzugefügt oder entfernt wurden.
Mit dem Befehl git branch
wird eine Liste aller Branches angezeigt.
Es wird angezeigt welcher Branch aktuell ausgewählt ist.
Mit dem Befehl git branch <name>
wird ein neuer Branch erstellt.
Mit dem Befehl git checkout <name>
wird der Branch gewechselt.
Es wird der Branch mit dem Namen <name>
ausgewählt.
Mit dem Befehl git merge <name>
wird der Branch <name>
in den aktuellen Branch gemerged.
Das heißt alle Änderungen die im Branch <name>
gemacht wurden werden in den aktuellen Branch übernommen.
Das ist für uns nur relevant wenn wir bei einem Pull Request, Merge Conflict haben. um den Merge Conflict zu lösen müssen wir den
sprint
Branch in den aktuellen Branch mergen.
Mit dem Befehl git push
werden alle Commits die noch nicht auf dem Server sind auf den Server geladen.
Mit dem Befehl git pull
werden alle Commits die auf dem Server sind heruntergeladen und gemerged.
Ein Pull Request ist eine Anfrage an die anderen Teammitglieder einen Branch in einen anderen Branch zu mergen.
In unserem Fall wird ein Pull Request erstellt wenn ein Ticket fertig ist und der Branch in den sprint
Branch gemerged werden soll.
Ein Code Review ist eine Überprüfung der Änderungen die in einem Pull Request gemacht wurden. Hierbei wird überprüft ob die Änderungen den Coding Guidelines entsprechen und ob die Änderungen sinnvoll sind. Außerdem wird überprüft ob die Tests noch funktionieren und der Code die richtige Logic hat.
<bearbeiter>/<ticket-id>-<name-of-ticket>
sprint
Branch wechseln: git checkout sprint
sprint
Branch aktuell ist: git pull
git branch <bearbeiter>/<ticket-id>-<name-of-ticket>
git checkout <bearbeiter>/<ticket-id>-<name-of-ticket>
In Progress
zu setzengit add <file>
git add .
git status
überprüfen welche Dateien zum Index hinzugefügt wurdengit rm --cached <file>
eine Datei aus dem Index entfernengit commit
git log
überprüfen ob der Commit erstellt wurdegit diff
überprüfen ob du alle Änderungen zum Commit hinzugefügt hastgit commit --amend
zum
letzten Commit hinzufügengit push -u origin <bearbeiter>/<ticket-id>-<name-of-ticket>
git push
benutzengit push -u origin <bearbeiter>/<ticket-id>-<name-of-ticket>
schreiben willst kannst du mit
git config --global push.autoSetupRemote true
einstellen das der richtige Branch und Server automatisch ausgewählt werden gh pr create --base sprint
(du musst dafür das GitHub CLI installiert haben)sprint
BranchIn Review
sprint
Branch gemerged