0%

Gewoontes voor een echt project · oefening

Eén wijziging beoordelen en committen

De ignore-regels houden lokale hulpmiddelen buiten de geschiedenis. Ze bepalen niet wanneer bruikbaar projectwerk klaar is. Die beslissing volgt uit een korte controle vóór elke commit: bekijk wat veranderde, stage de ene samenhangende wijziging die je wilt vastleggen, bekijk de gestagede momentopname en geef die een onderwerp waar een andere lezer iets aan heeft.

Het weekendweerbericht van het project staat nu in forecast.py. Je volgende werk is bewust klein: voeg een aparte maandagmelding toe in monday.txt, en verder niets.

Bekijk de wijziging in de werkboom

Maak monday.txt met dezelfde terminaleditor als eerder:

nano -w monday.txt

Voer deze ene regel in:

Monday: bright spells

Sla op met Ctrl-O, druk op Enter en sluit af met Ctrl-X.

Je kent git status al als overzicht van openstaande paden en git diff als weergave van de exacte ongestagede wijzigingen in paden die Git al volgt. Gebruik beide vóór het stagen. Hier noemt status monday.txt, maar git diff drukt niets af omdat het nieuwe bestand nog ongetrackt is en nog geen deel is van Gits vergelijking met de werkboom:

git status
git diff

Die lege diff betekent niet dat het bestand leeg is of klaar om te committen; git status vertelt dat het nieuwe pad nog een beslissing nodig heeft. Verschijnt er een ander pad, handel dat dan af voordat je verdergaat in plaats van niet-gerelateerd werk in deze commit mee te nemen.

Bekijk de momentopname die Git gaat committen

git add monday.txt staget de huidige versie van dat ene bestand. Zodra een wijziging gestaged is, vergelijkt gewone git diff de werkboom met de index en kan die niets afdrukken. Gebruik git diff --staged om de klaargezette momentopname te bekijken. De optie --staged vertelt git diff om in plaats daarvan de index met de nieuwste commit te vergelijken.

Stage het bestand en bekijk daarna de klaargezette momentopname en de status:

git add monday.txt
git diff --staged
git status

De gestagede diff hoort het nieuwe bestand en zijn maandagregel te tonen. Dit is het laatste eenvoudige moment om een onbedoelde extra regel, een niet-gerelateerde wijziging of een privéwaarde te ontdekken voordat die geschiedenis wordt.

Geef één wijziging één bruikbaar onderwerp

De eerste regel van een commitmelding is het onderwerp, of subject. Een bruikbaar onderwerp vertelt wat veranderde en waar, duidelijk genoeg om deze commit van zijn buren te onderscheiden. Add the Monday forecast doet dat. Onderwerpen zoals update, changes of wip dwingen de lezer elke momentopname te openen om te ontdekken waarvoor die was.

De scope van een commit is het samenhangende stuk werk dat die bevat. Klein betekent geen willekeurige grens van één bestand of vijf regels. Het betekent dat de commit één bestaansreden heeft. Het maandagweerbericht is één reden; dat mengen met nieuwe ignore-regels of een herschreven README zou er meerdere maken.

git commit -m legt de gestagede momentopname vast en gebruikt de tekst tussen aanhalingstekens als onderwerp. Commit de bekeken wijziging en gebruik daarna gewone git log om de twee door jou gemaakte onderwerpen te lezen en git status om te bevestigen dat er niets onaf is:

git commit -m "Add the Monday forecast"
git log
git status

De nieuwste twee onderwerpen horen twee aparte keuzes te beschrijven: maandag toevoegen en lokale projectbestanden buiten Git houden. De laatste status hoort schoon te zijn hoewel de genegeerde nep- en gegenereerde bestanden op schijf blijven staan.

Wat toont git diff --staged vóór een commit?

Wat maakt de maandagcommit nuttig klein?

Dat is de volledige gewoonte: houd lokale hulpmiddelen buiten de geschiedenis, bekijk wat de index gaat vastleggen en geef elke samenhangende momentopname een onderwerp dat de volgende lezer helpt.