Be kasdienių komandų, Git siūlo galingus įrankius specifinėms situacijoms — bisect (klaidų radimas), blame (pakeitimų sekimas), worktree (keli darbo katalogai), submodules, filter-repo (istorijos perrašymas) ir dar daugiau. Žinojimas, kad jie egzistuoja ir ką jie daro, yra vertingas žinojimas sunkioms situacijoms spręsti.
git bisect — rasti, kuris commit'as įvedė klaidą
git bisect start
git bisect bad # the current commit has the bug
git bisect good v1.0 # this older commit was fine
# → Git BINARY-SEARCHES the commits between them, checking out each;
# you mark each good/bad → it pinpoints the exact commit that introduced the bug
git bisect good # or: git bisect bad (at each step)
git bisect reset # when done
git bisect atlieka binary search per istoriją, efektyviai surandant commit'ą, kuris įvedė klaidą — nepamatomas debugging regresijai didelėse istorijose.
git blame — kas pakeitė kiekvieną eilutę ir kada
git blame <file> # show, per line, the commit/author/date that last changed it
# → trace WHEN and WHY a line was introduced (then git show that commit for context)
Kiti galingi įrankiai
git worktree → multiple working directories from one repo (work on branches
simultaneously without stashing/switching) — e.g. fix a bug while a build runs
git submodule → embed another Git repo inside yours (shared dependencies/libraries)
git filter-repo → rewrite history at scale (remove a file/secret from ALL history,
split/clean repos) — the modern replacement for filter-branch
git rerere → REuse REcorded REsolution — remembers conflict resolutions to reapply
git hooks → scripts triggered on events (pre-commit, pre-push) — automation/checks
git revert/reset, reflog → undo/recovery (covered separately)
Kodėl tai svarbu
Pažangių Git komandų ir metodų supratimas yra vertingas aukšto lygio žinojimas efektyviam sudėtingų situacijų sprendimui, todėl žinojimas, kad jie egzistuoja ir ką jie daro, išplečia jūsų problemų sprendimo įrankių rinkinį.
Nors kasdienės komandos pakanka įprastiems darbams, pažangūs įrankiai elegantiškai sprendžia specifines, kartais kritines problemas. git bisect yra ypač vertingas — jis binary-paieška per istoriją suranda tikslią commit'ą, kuris įvedė klaidą, paversdamas bauginančią regresiją suradimo užduotį didelėje istorijoje efektyvia, sistemiška procedūra (galinga debugging technika, kurią daugelis nežino). git blame (rodydamas, kuris commit'as ir autorius paskutinį kartą pakeitė kiekvieną eilutę) yra nepamatavimas kod historijos supratimui — sekant, kada ir kodėl eilutė buvo įvesta, naudinga debugging ir supratimui.
Kiti įrankiai sprendžia realius poreikius: git worktree (keli darbo katalogai iš vieno repo, leidžiantys tuo pat metu dirbti skirtingose šakose be stash — patogu konteksto pasikeitimams), git submodule (repozitorijų įdėjimas bendriems priklausomybėms), git filter-repo (istorijos perrašymas dideliu mastu, iš esmės atsitiktinai įtrauktų slapumų ar failų šalinimui iš visos istorijos — svarbi saugumo atitaisymas), git rerere (konfliktų sprendimų atsiminimas), ir git hooks (patikrinimų automatizavimas renginių metu, pvz. pre-commit).
Žinojimas, kad šie įrankiai egzistuoja ir ką jie daro, reiškia, kad kai kyla sudėtinga situacija (regresiją radimas, istorijos sekimas, slapumų šalinimas iš istorijos, priklausomybių valdymas), žinote tinkamą įrankį, o ne varginate rankiniais būdais.
Kadangi kyla sudėtingos Git situacijos (debugging regresijai, istorijos sekimui, slapumų valymui iš istorijos, kompleksų sąrankų valdymui) ir pažangios komandos jas galingai sprendžia, pažangių Git komandų ir metodų supratimas — ypač bisect klaidoms rasti ir blame istorijai sekti, plius žinojimas apie worktree, submodules, filter-repo ir hooks — yra vertingas aukšto lygio žinojimas, kuris išplečia jūsų gebėjimą spręsti sudėtingas Git scenarijus, atspindėdamas gylį ir problemų sprendimo diapazoną, kurio tikimasi aukšto lygio vaidmenims.
