Aufgabe
Legen Sie ein neues Verzeichnis ein und speichern Sie folgende Datei unter dem Namen primes.js
darin:
- primes.js
function* primes() { let p=2; while (true) { let d=1; while (d<p) { d++; if (p%2!=0) { yield p; d=1; p++; } } yield p; d=2; p++; } } let i=0; for (let prime of primes()) { console.log(`[${i}] ${prime}`); i++; if (i>=10) break; }
Legen Sie ein neues git-Repo an (alle Kommandos im neu angelegten Ordner):
git init git add primes.js git commit -m 'version 1'
Korrigieren Sie erst Zeile 8, es sollte p%d!=0
heissen (nicht nur mod 2).
Da nur gerade eine Datei vorhanden ist, kann add
und commit
kombiniert werden:
git commit -am 'mod d anstatt mod 2'
Primazahlen sehen anders aus. Das soll in einem separaten branch dev
gefixt werden:
git checkout -b dev
Bauen Sie debug-messages ein, korrigieren Sie den Code, commiten Sie mit debug messages:
git commit -am 'working primes'
Aber eigentlich wollen wir gar keine dubg-messages. Entfernen Sie diese und ändern Sie den letzten Commit:
git commit --amend -m 'code now working' git log
Commits können nachträglich noch verändert werden, aber das sollte nur auf lokalen, unplublizierten branches gemacht werden. Sonst ist Chaos inbegriffen.
Notfallmässig muss auf dem main-branch ein Sicherheitsupdate eingespielt werden. Es sollen jetzt 20 Primzahlen ausgegeben werden.
git checkout main # edit primes.js accordingly git add primes.js git commit -m 'wichtiges sicherheitsupdate'
merge
Um die Branches wieder zusammenzuführen, kann gemerge
t werden. Das sollte in diesem Fall ohne Konflikte funktionieren. Der dev
-Branch kann danach gelöscht werden.
git checkout main git merge dev git branch -d dev
merge mit Konflikten
git checkout -v bla # Ersetze in der Ausgabe die eckigen durch runde Klammern git commit -am 'rund statt eckig' git checkout main # Entfern in der Ausgabe die eckigen Klammern. <code bash> git commit -am 'ohne Klammern' git merge bla
Editieren Sie die Datei und entfernen Sie die Markierungen und die unerwünschte Zeile.
git add primes.js git commit -m 'variante aus bla' git reflog
Wenn man bereits weiss, welche Version im Falle von Konflikten massgeben ist, kann das auch direkt vermerkt werden.
Erst aber mal den merge rückgängig machen:
git checkout main git reset --hard HEAD^
Und dann mergen (das checkout main
ist unnötig, wenn man bereits auf dem branch main
ist).
git checkout main git merge -s ort -X ours bla