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/