Rebase, nebo squash: kdy se vyplatí git historie bez merge commitů

Z Mazovia

Doma je situace jiná, ale i tady platí několik pravidel. Výchozí nastavení routeru často obsahuje slabé heslo a nezabezpečenou administraci. Přihlaste se do rozhraní routeru, změňte přihlašovací údaje a zapněte šifrování WPA2 nebo WPA3. Vypněte WPS, které bývá snadno prolomitelné. Síť pojmenujte tak, aby neprozrazovala vaše jméno ani byt. Firmware routeru aktualizujte – výrobci v něm opravují známé chyby.

Nejčastější chyba při plánování vrtu je podcenění geologického průzkumu. Bez mapy puklin a měření teplotního gradientu se vrt může minout o stovky metrů. Další častá chyba je poddimenzované potrubí. Když je průměr malý, voda v něm rychle ztrácí teplotu a do domů dorazí vlažná. Pozor také na korozi — geotermální voda obsahuje rozpuštěné minerály a plyny, které běžnou ocel rozleptají během několika let. Proto se používají plastové nebo nerezové trubky.

Prvním krokem je poznat, do čeho se vůbec připojujete. V seznamu sítí hledejte ikonu otevřeného zámku nebo chybějící symbol šifrování. Pokud se po připojení neobjeví výzva k zadání hesla, síť je veřejná. Pozor ale na pasti: útočník vytvoří síť se stejným názvem, jako má ta legitimní, a vy se připojíte k němu. Vždy si ověřte přesný název sítě přímo u obsluhy nebo v prostoru, kde se nacházíte. Název jako „Wi-Fi zdarma" bez dalšího ověření je varovný signál.

Otevřená Wi-Fi síť v kavárně, na nádraží nebo v hotelu vypadá jako pomoc v nouzi. Jenže právě tyto sítě jsou nejčastějším místem, kde přijdete o hesla, e-maily i přístup do bankovnictví. Útočník sedí o dva stoly dál, spustí odposlech a během pár minut má kompletní přehled o tom, co děláte. Nejde o teorii, tyto útoky jsou běžné a obranu zvládne každý.

Squash a interaktivní rebase v praxi Druhá technika je squash. Chcete-li z pěti commitů „oprava", „ještě oprava" a „zapomenutý soubor" udělat jeden smysluplný, použijte git rebase -i HEAD~5. V editoru označíte první commit jako pick a ostatní jako squash nebo fixup. Git je spojí a nechá vás přepsat zprávu. Dobrá zpráva popisuje, co změna dělá a proč, ne jak jste se k ní dopracovali. Běžná chyba je squashovat commity, které řeší různé věci. Pak v historii není vidět, kdy a proč se co změnilo, a při hledání regrese jste zpátky na začátku.

V týmu je klíčové sladit, co patří do hlavní větve. Funguje model, kdy hlavní větev přijímá jen lineární commity přes takzvaný fast-forward. Na serveru nastavíte ochranu větve a zakážete merge commity. Vývojář si větev před odesláním zrebasuje a pushne. Pokud push selže kvůli nefast-forward, znamená to, že někdo jiný mezitím poslal změnu. Řešení je git fetch a git rebase origin/main znovu, nikdy git push --force naslepo. Force push používejte jen na své vlastní větvi, ideálně s --force-with-lease, které ověří, že na serveru není cizí práce.

Co dělat, když už jste připojeni Jakmile jste v nezabezpečené síti, nepřihlašujte se do banky, e-shopů ani e-mailu. Veškerá komunikace bez šifrování je čitelná. Pokud nutně potřebujete něco vyřídit, použijte mobilní data nebo VPN, která provoz zašifruje. Bez VPN alespoň nikdy nepotvrzujte přihlášení přes odkaz z e-mailu a nepovolujte uložení hesla v prohlížeči. Typická chyba je i to, že lidé na veřejné síti aktualizují software nebo stahují přílohy – i tím se otevírá cesta k napadení.

Typická chyba: majitel cítí zápach, koupí žvýkací pamlsek na dech a čeká. Pamlsek může mechanicky setřít plak, ale existující kámen neodstraní. Další chyba je škrábání kámenu nehtem nebo kuchyňským nástrojem. Tím se poškodí sklovina a vznikne místo, kde se plak zachytává ještě víc. Nikdy nezkoušejte kámen odlupovat sami, ani když vypadá, že drží jen na okraji.

Nezapomeňte na vzory. Proužky, kostky nebo květiny mají také barvy a musí do palety zapadat. Vzor, který obsahuje dvě vaše základní barvy a jeden akcent, je požehnání. Vzor s pěti barvami, z nichž žádná není ve vaší paletě, je past. Když si nejste jistí, vyfoťte si ho a porovnejte s ostatními věcmi na bílé ploše. Foťte za denního světla, ne v šatně pod žlutým světlem.

Merge commity vznikají pokaždé, když do hlavní větve sloučíte jinou větev pomocí git merge. V malém týmu to nevadí, ve větším se z historie stane nečitelný had. Řešením je přepisovat vlastní commity tak, aby se do hlavní větve dostaly jako lineární posloupnost. Nejde o dogma, ale o dohodu, kterou musí dodržovat všichni. Pokud ji poruší jediný člověk, výhody zmizí.

Rebase není vhodný pro vše. Pokud slučujete dlouho žijící větev, kde záleží na kontextu větvení, merge commit má smysl. Také ve chvíli, kdy na větvi pracuje více lidí a nelze ji bezpečně přepsat. Rozhodněte se podle toho, zda je historie určená ke čtení, nebo jen k archivaci. Pro většinu týmů platí: krátké větve, rebase před mergem, squash nesouvisejících oprav. Když se to podaří, git log se dá číst shora dolů a každý commit něco znamená.