Git Bisect: den Commit finden, der einen Bug eingeführt hat

Die Test-Suite ist seit drei Wochen grün. Heute schlägt npm test bei einer Assertion fehl, die nichts mit Ihrer letzten Änderung zu tun hat, und git log v1.4.0..HEAD zeigt 340 Commits von vier Personen seit dem letzten Release, von dem jemand sicher war, dass er funktioniert. Jeden Diff zu lesen kostet Sie einen ganzen Tag. Wahllos Commits auszuchecken geht schneller, ist aber immer noch kein Plan. git bisect macht daraus eine Binärsuche. Sie nennen ihm einen Commit, der nachweislich gut ist, und einen, der nachweislich kaputt ist; das Tool checkt den Commit in der Mitte dazwischen aus und wartet, bis Sie genau diesen Commit testen und das Ergebnis melden. Jede Antwort halbiert den Bereich. 340 Commits lassen sich in höchstens 9 Tests auflösen, denn 2^9 = 512. ...

22. September 2026 · 6 Minuten · 1169 Wörter · SpaghettiCoder

Git Rebase vs Merge: Unterschiede und wann welches

Sie holen sich das neueste main per Pull, und Git bricht ab mit CONFLICT (content): Merge conflict in checkout.js. Sie lösen den Konflikt, und im Log steht jetzt ein Commit namens Merge branch 'main' into feature/checkout, oben auf den drei Commits, die Sie tatsächlich geschrieben haben. Vier Commits, eine einzige echte Änderung. Ein Kollege, der diese Historie nächsten Monat liest, kann nicht erkennen, welcher welcher ist. git merge und git rebase beantworten dieselbe Frage: Wie bringe ich meinen Branch auf den Stand der Änderungen, die anderswo gemacht wurden. Sie hinterlassen sehr unterschiedliche Spuren, und die falsche Wahl auf einem geteilten Branch richtet echten Schaden an. ...

13. September 2026 · 8 Minuten · 1597 Wörter · SpaghettiCoder