Was ist ein atomarer Commit?
Ein atomarer Commit erfasst genau eine logische Anderung. Er kompiliert, besteht seine eigenen Tests und kann isoliert reverted werden.
Der Geruchstest
Wenn Sie sich dabei ertappen, eine Commit-Nachricht mit dem Wort "und" zu schreiben — "Add login and fix typo and refactor helper" — sehen Sie drei Commits in einem.
Selektives Staging mit git add -p
git add -p src/checkout.js
# y - stage this hunk
# n - skip this hunk
# s - split into smaller hunks
# e - manually edit the hunk
Ein Arbeitsbeispiel
git add src/checkout.js
git commit -m "Fix off-by-one in cart total calculation"
git add tests/checkout.test.js
git commit -m "Add regression test for cart total bug"
git add README.md
git commit -m "Fix typo in installation section"
Bereits gemachte Commits aufteilen
git rebase -i HEAD~3
git reset HEAD^
git add -p
git commit -m "First atomic piece"
git add -p
git commit -m "Second atomic piece"
git rebase --continue
Versehentliche Uberspaltung kombinieren
Das gegenteilige Problem wird mit Squash gelost.
Tests bei ihrem Code halten
Tests fur ein Feature sollten im selben Commit wie das Feature leben.
Atomare Commits und Bisect
git bisect start
git bisect bad HEAD
git bisect good v2.4.0