17. Odebrání revize z větve
Cíle
- Naučit se mazat nejnovější revize pobočky
Revert
je výkonný příkaz z předchozí části, který umožňuje zrušit všechny závazky do úložiště. Původní i zrušené závazky se však v historii zobrazují pobočky (při použití příkazu git log
).
Často poté, co již došlo ke spáchání, si uvědomíme, že to byla chyba. Bylo by hezké mít příkaz Zpět, který umožňuje okamžité smazání nesprávných potvrzení. Tento příkaz zabrání výskytu jednoho nebo více nechtěných potvrzení v historii git log
.
01 Příkaz reset
Příkaz reset
jsme již použili k vyrovnání nárazníkové zóny a vybraného potvrzení (v předchozí lekci byl použit příkaz HEAD).
Když je uveden odkaz na potvrzení (tj. větev, hash nebo název značky), reset
…
- Přepíše aktuální větev, takže bude ukazovat na správné potvrzení
- Volitelně resetuje vyrovnávací zónu, aby vyhovovala zadanému potvrzení
- Volitelně můžete resetovat pracovní adresář, aby odpovídal zadanému potvrzení
02 Zkontrolovat naši historii
Pojďme si rychle prohlédnout naši historii potvrzení .
Spustit:
git hist
Výsledek:
Vidíme, že poslední dva závazky v této větvi jsou „Jejda“ „a“ Vrátit Jejda „. Odstraňte je pomocí příkazu reset
.
03 Nejprve označte tuto větev
Označte poslední potvrzení pomocí tag, so you can find it after removing a commit(s).
Spustit:
git tag oops
04 Resetovat potvrzení na předchozí Jejda
V výše v protokolu historie je potvrzení „v1“ označeno před potvrzeními „Jejda“ a „Vrátit Jejda“. Obnovme větev do tohoto bodu. Protože pobočka má značku, můžeme v příkazu reset použít název značky (pokud značku nemá, můžeme použít hodnotu hash).
Spustit:
git reset --hard v1git hist
Výsledek:
Naše hlavní větev ukazuje na odevzdání v1 a revize Oops a Oops již v této větvi neexistují. Díky parametru --hard
je v pracovním adresáři reflektována nová hlavička větve.
05 Nikdy nic není ztraceno
Co se stalo se špatnými spácháními? Stále jsou v úložišti. Ve skutečnosti se na ně můžeme stále odvolávat. Na začátku lekce jsme vytvořili značku „oops“ pro zrušené potvrzení. Podívejme se na všechny závazky.
Spustit:
git hist --all
Výsledek:
Vidíme, že špatné závazky nezmizí. Už nejsou uvedeny v hlavní větvi, ale stále zůstávají v úložišti. Stále by byli v úložišti, kdybychom je neoznačili, ale pak bychom je mohli odkazovat pouze podle jejich hash jmen. Neodkazované závazky zůstanou v úložišti, dokud systém nespustí software pro odstraňování odpadků.
06 Resetovat nebezpečí
Resetování na místních pobočkách je obvykle neškodné. Důsledky jakékoli „nehody“ lze vrátit pomocí správného potvrzení.
Ostatní uživatelé, kteří sdílejí větev, však mohou být zmateni, pokud je větev sdílena na vzdálených úložištích.