====== Aufgabe ====== Legen Sie ein neues Verzeichnis ein und speichern Sie folgende Datei unter dem Namen ''primes.js'' darin: function* primes() { let p=2; while (true) { let d=1; while (d=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 ge''merge''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. 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 ====== Lektüre ====== * https://jwiegley.github.io/git-from-the-bottom-up/