Tipy & triky · Workflow · Všude · ~10 min týdně · 2 min čtení
git add -p: commitujte po kouscích, ne po souborech
Naposledy ověřeno:

Ideál je jednoduchý: jeden commit, jedna logická změna. Realita: při opravě chyby jste v tomtéž souboru ještě přejmenovali proměnnou a smazali mrtvý kód. Kdo commituje po souborech, tomu vznikne guláš — commit „oprava přihlášení“, ve kterém je i půlka úklidu. Příkaz git add -p (od slova patch) tohle řeší elegantně: projde změny po jednotlivých úsecích, každý vám ukáže jako diff a zeptá se, jestli patří do připravovaného commitu. Z jednoho pracovního chaosu tak vyrobíte dva tři čisté commity.
Jak na to
- Místo
git add souborspusťtegit add -p— git začne procházet změněné úseky (hunky) jeden po druhém a u každého se ptá jednou klávesou. - Základní odpovědi:
yúsek přidá do commitu,npřeskočí,qukončí procházení. Nápovědu ke všem volbám vypíše?. - Když git nabídne příliš velký úsek, ve kterém se míchá obojí, stiskněte
s(split) — rozdělí ho na menší kousky a ptá se na každý zvlášť. Na ještě jemnější dělení existujee, ruční úprava patche, ale sey/n/svystačíte v drtivé většině případů. - Po projití spusťte
git diff --cached— ukáže přesně to, co jste vybrali do commitu. Zkontrolujte a commitněte. - Zbylé změny zůstávají v pracovním adresáři netknuté — uděláte z nich druhý commit (třeba „úklid: přejmenování proměnných“), nebo je zahodíte.
Vzorová situace
Vývojář opravil výpočet DPH a při tom v souboru uklidil formátování a smazal zakomentovaný blok. Kdyby commitnul celý soubor, kolegyně při code review uvidí třicet změněných řádků a bude lovit, které tři jsou ta skutečná oprava. S git add -p vybere jen řádky s výpočtem, commitne „oprava zaokrouhlení DPH“, zbytek přidá do druhého commitu „úklid“. Review pak trvá dvě minuty místo patnácti — a když se za půl roku bude hledat, kde se změnilo zaokrouhlování, git log ukáže přesně na jeden malý commit.
Kdo raději kliká, najde totéž v grafických nástrojích: VS Code umí v zobrazení změn připravit ke commitu jednotlivé vybrané řádky (v diffu přes pravé tlačítko volba „Stage Selected Ranges“), podobně GitHub Desktop či JetBrains IDE. Princip je stejný — commitujete myšlenku, ne soubor.
Co vám to přinese
Commity začnou odpovídat tomu, co se skutečně stalo — jedna změna, jeden commit, čitelný diff. Code review kolegů se zrychlí, protože nikdo neloví jehlu v kupce nesouvisejících úprav. A bonus pro vás: procházení vlastních změn po kouscích je poslední kontrola, při které často odhalíte zapomenutý ladicí výpis dřív, než odejde do světa. Jak commity pojmenovat, radí tip commit zprávy pro budoucí já.
Chcete jít do hloubky? V příručce najdete kapitolu Základní systémy: inbox, priority, revize.
Podobné tipy
Kolečko myši umí klikat — a šetří to překvapivě moc času
kolečko myši
Kliknutí kolečkem otevře odkaz v novém panelu a zavře panel bez trefování křížku.
Rychlé přepínání jazyka klávesnice bez myši
Ctrl+mezerník
Ctrl+mezerník přepíná mezi českou a anglickou klávesnicí. Pro programátory a psaní v obou jazycích nezbytnost.
Cmd+Tab: přepínání aplikací jako profík
Cmd+Tab
Přepínač aplikací umí víc, než se zdá — zavírání aplikací, otevření okna i přepnutí bez puštění kláves.
Pomohlo vám to?
Líbil se vám tip?
Každý týden posílám jeden takový do e-mailu. Dvě minuty čtení, hodiny úspor.
1 tip týdně · žádný spam · odhlášení jedním klikem