Um das, was andere gesagt haben, zu erweitern und zu verdeutlichen: Häufiges Engagement und flexibles Drängen schließen sich nicht gegenseitig aus.
Sie sollten vorausschauend planen und Ihre Zusagen so gestalten, dass Sie in der Lage sind, sich anzupassen. Das bedeutet zweierlei: Sie müssen sicherstellen, dass Sie wirklich oft committen, und Sie müssen häufig verzweigen (wie in Git). Wenn Ihre Commits klein sind, ist es einfacher, sie später zu reorganisieren, wenn Sie Teile Ihrer Arbeit selektiv zusammenfassen müssen. Und wenn Ihre Zweige gut organisiert sind, haben Sie vielleicht schon einen Zweig, der genau dem entspricht, was Sie veröffentlichen wollen.
Vergleichen Sie diese beiden:
One branch, few commits:
- A1 - B1 - C1 - B2 - A2 - B3 - C3 (master)
Many branches, many commits:
M1 - M2 (master)
/
o - A1 - A2 - A3 - A4 - A5 - A6 (topicA)
|\
| B1 - B2 - B3 - B4 - B5 - B6 - B7 (topicB)
\
C1 - C2 - C3 - C4 - C5 (topicC)
Wenn Sie nun eines dieser drei Themen so wie es ist veröffentlichen wollen, müssen Sie es nur noch mit Master zusammenführen und veröffentlichen! Wenn Sie die Hälfte von ThemaA freigeben wollen, und diese Hälfte ist in den Commits A1, A3, A4 und A6 enthalten, müssen Sie nur ThemaA umbasen, um diese vier Commits an die erste Stelle zu setzen, den letzten von ihnen in Master einbinden und pushen. Der Rest von topicA (A2 und A5) kann für die weitere Arbeit herumliegen.
M1 - M2 ------------- X (master)
/ /
o - A1 - A3' - A4' - A6' - A2' - A5' (topicA)
(Commits, die mit A1', ... bezeichnet werden, weil bei Git zwei Commits mit demselben Inhalt, aber verschiedenen Elternteilen, eigentlich verschiedene Commits sind).