Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== Aufgabe ====== Legen Sie ein neues Verzeichnis ein und speichern Sie folgende Datei unter dem Namen ''primes.js'' darin: <code javascript 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; } </code> Legen Sie ein neues git-Repo an (alle Kommandos im neu angelegten Ordner): <code bash> git init git add primes.js git commit -m 'version 1' </code> 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: <code bash> git commit -am 'mod d anstatt mod 2' </code> Primazahlen sehen anders aus. Das soll in einem separaten branch ''dev'' gefixt werden: <code bash> git checkout -b dev </code> Bauen Sie debug-messages ein, korrigieren Sie den Code, commiten Sie mit debug messages: <code bash> git commit -am 'working primes' </code> Aber eigentlich wollen wir gar keine dubg-messages. Entfernen Sie diese und ändern Sie den letzten Commit: <code bash> git commit --amend -m 'code now working' git log </code> 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. <code bash> git checkout main # edit primes.js accordingly git add primes.js git commit -m 'wichtiges sicherheitsupdate' </code> ===== merge ===== Um die Branches wieder zusammenzuführen, kann ge''merge''t werden. Das sollte in diesem Fall ohne Konflikte funktionieren. Der ''dev''-Branch kann danach gelöscht werden. <code bash> git checkout main git merge dev git branch -d dev </code> ===== merge mit Konflikten ===== <code bash> 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 </code> Editieren Sie die Datei und entfernen Sie die Markierungen und die unerwünschte Zeile. <code bash> git add primes.js git commit -m 'variante aus bla' git reflog </code> 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: <code bash> git checkout main git reset --hard HEAD^ </code> Und dann mergen (das ''checkout main'' ist unnötig, wenn man bereits auf dem branch ''main'' ist). <code bash> git checkout main git merge -s ort -X ours bla </code> ====== Lektüre ====== * https://jwiegley.github.io/git-from-the-bottom-up/ lehrkraefte/blc/informatik/efi-2023/git/primes-example.txt Last modified: 2024/01/09 08:22by Ivo Blöchliger