Tipy & triky · Workflow · Všude · ~5 min týdně · 2 min čtení
git commit --amend: opravte poslední commit místo commitu „oprava“
Naposledy ověřeno:

Commitnete, a vteřinu poté to uvidíte: ve zprávě je překlep, nebo hůř — zapomněli jste přidat jeden soubor. Reflex velí udělat druhý commit s názvem „oprava“, „fix“ nebo „teď už fakt“. Historie plná takových záplat se ale špatně čte a při hledání chyby jen překáží. Git na to má čistší nástroj: git commit --amend nevytvoří nový commit, ale přepíše ten poslední — přibalí do něj, co jste zapomněli, nebo opraví zprávu. Výsledek vypadá, jako byste to napoprvé udělali správně.
Jak na to
- Překlep ve zprávě: spusťte
git commit --amend -m "správná zpráva"— commit zůstane, jen dostane novou zprávu. Bez-mse otevře editor s původním textem k úpravě. - Zapomenutý soubor: přidejte ho jako obvykle (
git add zapomenuty.js) a spusťtegit commit --amend --no-edit. Soubor se přibalí do posledního commitu a--no-editzachová původní zprávu — žádné otázky navíc. - Funguje to i obráceně: když do commitu omylem přibalíte soubor navíc,
git reset HEAD~ soubor.txtho z posledního commitu vyjme (změny zůstanou v pracovním adresáři) — pak stačí amend. - Zásadní pravidlo: amend přepisuje historii, takže ho používejte jen na commity, které jste ještě neposlali příkazem push. Jakmile je commit na sdíleném serveru a mohli si ho stáhnout kolegové, opravte chybu radši novým commitem.
- Pokud přece jen amendnete už pushnutý commit na své vlastní pracovní větvi, budete muset použít
git push --force-with-lease— a to jen tehdy, když na větvi nepracuje nikdo jiný.
Vzorová situace
Vývojářka commitne úpravu API a vzápětí zjistí, že zapomněla přidat soubor s testem — klasika, protože test leží v jiné složce. Dřív by historie dostala dvojici „úprava API endpointu“ + „přidán zapomenutý test“. Teď: git add tests/api.test.js, git commit --amend --no-edit — a v historii je jeden úplný commit, ve kterém změna a její test žijí pohromadě. Kdokoli si ho v budoucnu zobrazí, vidí celek, ne půlku. Stejný pohyb opakuje během dne ještě dvakrát — jednou kvůli překlepu ve zprávě, jednou kvůli zapomenutému řádku v changelogu — a pokaždé je to otázka pěti vteřin, protože --amend --no-edit má v prstech jako jeden celek.
Co vám to přinese
Z historie zmizí šum commitů „oprava překlepu“ a „zapomněl jsem soubor“, které nikoho nezajímají a při procházení jen překážejí. Každý commit je ucelený, což ocení kolegové při review i vy při budoucím hledání v historii. A drobné přešlapy přestanou být veřejné — opravíte je dřív, než je kdo uvidí. Souvisí s tipem 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
Pište si ve Slacku sami sobě: zápisník, který máte vždy otevřený
Slack má konverzaci s vámi samotnými — soukromý prostor na poznámky, odkazy a rozepsané zprávy, synchronizovaný mezi počítačem a mobilem.
Výškově stavitelný stůl: střídejte, nestůjte
Kouzlo není ve stání celý den, ale ve střídání poloh — a v pohybu, který se do práce vejde.
Ctrl+R v terminálu: napište kousek příkazu, historie ho najde
Ctrl+R
Dlouhý příkaz z minulého týdne nemusíte lovit šipkou nahoru. Ctrl+R prohledá historii podle libovolného útržku a našeptá ho celý.
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