Git je poriadne robustný nástroj, ktorý sa môže pochváliť až 150 subcommandmi, pričom presné číslo závisí od verzie gitu. Pomocou metódy z tohto vlákna na mojom počítači:

$ git help -a | grep "^  " | wc -l
144

Momentálne 144 subcommandov, akokoľvek skreslená môže byť vyššie uvedená metrika, je stále pôsobivých. Ale nemôžem povedať, že mám git rád. Áno, používam ho takmer každý deň, dokonca aj na úlohy, ktoré sú pravdepodobne lepšie zvládnuté iným nástrojom, ale napriek tomu je to obor.

Subcommands nie sú celý obrázok #

Čítate správne a ak ste git používali čo i len trochu, pravdepodobne ste si vedomí faktu, že v podstate všetky tieto subcommands majú svoje vlastné argumenty a tu začína všetok chaos. Nevymenujem ich všetky, ale viete, že hovorím o git add -A, git commit -a, git commit -m, git branch -r alebo git branch -m, aby som vymenoval aspoň niektoré.

Tak čo je s resetom? Git reset je ďalší taký subcommand, ktorý ponúka viacero argumentov, ktoré sa skutočne často používajú. Konkrétne je to git reset --hard, o ktorom premýšľam ako o akomsi stroji času na cestovanie späť v čase (v zmysle histórie commitov), a git reset --soft, ktorý som zvyčajne používal po nejakom zle spravenom amende. Váš prípad môže byť iný.

Každopádne, oba tieto príkazy vychádzajú zo svojho rodiča, mocného git reset. Ako to, že som tento príkaz nikdy predtým nepoužil bez argumentov? Je to taký základný príkaz, spojený s úplným jadrom samotného gitu. No, nakoniec som aj túto hranicu prekročil. Úspešne som použil (a pochopil) git reset na rozdelenie predchádzajúceho commitu na dva samostatné! Naozaj to pôsobí ako zaškrtnutie ďalšieho políčka na celoživotnom TODO zozname programátora.