Laikinas pakeitimų ignoravimas su GIT

2015 rugsėjio 15 d. GIT

Baisu būna, kai atviro kodo projektai turi kažkokį konfigūracinį failą išsaugotą repozitorijoje ir kurį būtinai reikia pasikeisti pagal savo poreikius. Aišku, projektai tobulėja ir anksčiau ar vėliau atsiranda „lokalių konfigūracinių failų“ palaikymas.

O ką daryti kai jų nėra? Paprasta - GIT leidžia mums laikinai ignoruoti failus ir paslėpti jų modifikacijas nuo git status ar git diff komandų.

Tarkime modifikavome konfigūracijų failą config.py ir dabar jį matome įvykdę git status komandą:

$ git status -sb
master...origin/master
MM config.py

Ir žinoma situacija - mes nenorime šių pakeitimų commit’inti, nes tai gali būti laikinas duomenų bazės testavimas, laikinas debug režimo įjungimas ar pan. Taigi, praneškime GIT’ui, kad šio failo pakeitimus kol kas ignoruosime:

git update-index --assume-unchanged config.py

Ir dabar paklausus GIT pakeitimų gautume tokią išvestį:

$ git status -sb
master...origin/master

Jokių pakeitimų. Nors mūsų pakeitimai tikrai egzistuoja tame faile. Jokios „magijos“ čia nėra. GIT’as savo pakeitimus įsirašo į savo lokalų index failą ir užkešuoja šias nuostatas.

Vėliau, nusprendę atstatyti failą į originalų failą (pavyzdžiui po keleto komitų):

git update-index --no-assume-unchanged config.py

Reikėtų nepamiršti keleto dalykų:

  • Toks sprendimas turėtų būti laikinas.
  • Persijunginėjant tarp branch’ų toks sprendimas neveiks nes bus naujinamas index failas ir valomas kešas.
  • Jūsų pakeitimai gali įtakoti programos rezultatą, tai yra tikimybė, kad susidursite su “o man tai veikia“ situacija.

Ši komanda jau yra pravertusi ne vieną kartą programuojant, tikiuosi pagelbės ir Jums.