Alias-nimien luominen Gitissä on tehokas ominaisuus, jonka avulla voit määrittää "pikakomentoja" pidemmille Git-komennoille – ja paljon muullekin. Joillekin se on vain keino tehdä Gitin komentorivikäytöstä siedettävää, mutta näytän, että Git-alias-nimet ovat niin tehokkaita, että ne voivat tehdä komentorivistä ensisijaisen ja tehokkaimman tavan käyttää Gitiä.
Jan Krag
Jan has been with us since 2014 as a Continuous Improvement Agent. He is an accredited trainer for Docker and Github and is also a certified life coach. Jan has a truly diverse range of interests. He breeds oriental cats, builds and flies his own kites, collects Rubik’s cubes, and enjoys snowboarding. Wow!
Tiesitkö, että Gitin voi mukauttaa tarpeisiisi lukemattomilla tavoilla?
Git-aliasien luomisen tärkeimpiä syitä voivat olla yksi tai useampi seuraavista:
Optimointi: Luo pikakomentoja usein käytetyille Git-komennoille.
Mukauttaminen: Saat Gitin toimimaan haluamallasi tavalla tai tukemaan tiimin yhdessä sopimia käytäntöjä.
Muistaminen: Helposti muistettavia pikakomentoja monimutkaisiin toimintoihin.
Blogisarjani ensimmäisessä osassa vien sinut matkalle aivan perusteista alkaen: esittelen Git-aliaksia, joilla voi vain säästää pidempien komentojen kirjoittamiselta, ja etenen edistyneempiin ominaisuuksiin, joita edes monet kokeneet Git-käyttäjät eivät ole koskaan hyödyntäneet.
Toisessa osassa jatketaan siitä eteenpäin: esitellään vielä edistyneempiä käsitteitä ja sukelletaan Git-aliasien todella erikoisiin käyttötapoihin, mukaan lukien suorastaan hulluihin esimerkkeihin, ennen kuin käsitellään vaihtoehtoja samojen tarpeiden ratkaisemiseksi.
Näiden tekniikoiden oppiminen ja ymmärtäminen tekee sinusta tehokkaamman ja osaavamman Git-käyttäjän, hyödynsitpä muiden tekemiä aliaksia tai kokeilit itse rajoja. Toivottavasti se tekee myös päivittäisestä Gitin käytöstäsi miellyttävämpää. Matkan varrella opit todennäköisesti myös muutamia vinkkejä ja niksejä sekä tutustut Gitin osa-alueisiin, joiden olemassaolosta et ehkä edes tiennyt.
Mitä Git-aliaset ovat ja miten ne määritetään?
Git-aliaset korvaavat Gitin alikomentoja samalla tavoin kuin esimerkiksi Bash-aliaset korvaavat muita Bash-komentoja tai skriptejä. Gitin avulla voit yksinkertaisesti määrittää omia Git-komentoja, jotka tekevät haluamasi asiat ja toimivat saumattomasti sisäänrakennettujen komentojen rinnalla.
Aliakset määritetään Gitin config-hierarkiassa, mutta koska yleensä haluamme niiden toimivan kaikkialla koneellamme, niiden luonteva paikka on globaali konfiguraatio.
Voit lisätä aliaksia joko muokkaamalla globaalia config-tiedostoasi suoraan tai käyttämällä komentoa git config.
Luo ensimmäinen yksinkertainen alias kokeilemalla:
Tämä lisää uuden rivin globaalin config-tiedostosi [alias]-osioon ja luo osion, jos sitä ei vielä ole. Katsotaanpa:
Myöhemmin, kun käytät monimutkaisempia aliaksia, suosittelen avaamaan tiedoston ~/.gitconfig haluamassasi editorissa ja lisäämään tai muokkaamaan aliaksia suoraan siellä.
Taso 1: laiska kirjoittaja
Hyvä, aloitetaan ensimmäisestä tasosta. Olen laiska ja haluan vain nopeuttaa satoja kertoja päivässä käyttämieni komentojen kirjoittamista tai käsitellä yleisiä kirjoitusvirheitä, joita teen usein.
Näimme jo edellä ehdotuksen st, mutta tässä on vielä muutamia yleisiä esimerkkejä yksinkertaisista pikakomennoista:
Yleisiä kirjoitusvirheitä korjaavat aliakset ovat makuasia. Luo aliaksia niille komennoille, joita sormesi eivät osaa kirjoittaa oikein. Oma arkkiviholliseni on switch, mutta olen päättänyt käyttää aina yllä ehdotettua lyhyttä komentoa sw sen sijaan, että loisin aliaksia kaikille mahdollisille kirjoitusvirheille, joita voin tuossa yhdessä sanassa tehdä. Tässä kuitenkin muutamia esimerkkejä inspiraatioksi:
Tässä vaiheessa saatat jo miettiä, mitkä Git-komennot sopisivat parhaiten aliaksiksi. Keksin tähän mielenkiintoisen vastauksen vuosia sitten. Gitin tavoin myös komentotulkkini (Bash, Zsh) tukee aliaksia. Siksi loin seuraavan komentotulkkiaksen .bashrc- ja .zshrc-config-tiedostoihini:
Osa näistä voi olla jo olemassa olevia aliaksia (tässä slog, st ja glog), mutta muut voivat hyvinkin olla sinulle sopivia ehdokkaita lyhennettäviksi tai muistettaviksi jo luomiesi aliasten avulla. Ainoa syy siihen, että käytän komentoa git status niin usein git st-aliaksestani huolimatta, on se, että pidän paljon Git-koulutuksia, joissa sitoudun käyttämään varsinaisia komentoja.
Taso 2: yksinkertaiset asetukset päivittäisten valitsimien kirjoittamisen välttämiseksi
On siis aika säätää Git-aliasien äänenvoimakkuutta pykälää suuremmalle. Aliasten avulla voimme myös lisätä asetuksia niihin Git-komentoihin, joille luomme aliaksia, joten katsotaan, miten voimme hyödyntää sitä.
Yleisin käyttötapaus on helppojen aliasten luominen Git login tulosteen tavallisille muunnelmille.
Esimerkiksi:
Toinen loistava ehdotus on käyttää tätä ominaisuutta niiden ärsyttävien, ”puuttuvien” Git-komentojen luomiseen, joiden mielestäsi pitäisi olla olemassa ja joissa voi olla vaikea muistaa, mitä komentoa ja valintaa täytyy käyttää tuon hyvin yleisen tehtävän suorittamiseksi.
Monet Gitin käyttäjät eivät tosin ehkä ole koskaan kuulleet näistä Git-komennoista ja -valinnoista, saati käyttäneet niitä. Siksi nämä aliakset ovat joko hyödyttömiä tai erinomainen mahdollisuus oppia uutta.
Taso 3: Monimutkaiset argumentit auttavat muistamaan harvoin käytetyt komennot
Matkamme seuraavalla tasolla tarkastelemme aliasten käyttöä komennoissa, jotka hyväksyvät myös monimutkaisia argumentteja.
Tähän asti olemme keskittyneet pääasiassa usein tai yleisesti käytettyjen komentojen aliaksiin, mutta koska voimme nyt lyhentää myös paljon monimutkaisempia komentoja, voi olla hyödyllistä mennä myös toiseen suuntaan ja käyttää aliaksia seuraaviin:
Harvoin käytettäviin vaikeasti muistettaviin Git-tehtäviin.
Hankalasti kirjoitettavien komentojen helpottamiseen.
Yhdessä nämä auttavat sinua hyödyntämään käteviä Git-ominaisuuksia, joihin et muuten ehkä vaivautuisi.
Kuten näet, olen kuvannut aliakset ”rivinsisäisesti” yllä olevissa esimerkeissä hyödyntämällä mahdollisuutta lisätä asetustiedostoon # kommentteja. Tarkoitus ei ole vain tehdä esimerkistä helpompaa, vaan myös vahvasti suositella, että teet näin omassa asetuksessasi. Minulta kesti aivan liian monta vuotta oppia tämä kantapään kautta, ja nyt minulle on kertynyt lukuisia outoja aliaksia ja muita asetuksia, joiden tarkoitusta en enää oikein muista.
Katsotaan muutamaa tarkempaa ja usein käyttämääni esimerkkiä kokoelmastani. Tällä kertaa näytän myös tulokset. Esittelen hyödyllisen diff-aliaksen, mutta ensin ”ennen”-näkymän, kun suoritetaan git diff Markdown-tiedostolle.
Lisätään nyt alias:
Ja käytetään sen sijaan sitä:
Tämä on selvästi paljon selkeämpi ja helpompi hahmottaa. Taika ei ole itse aliaksessa, vaan Gitin sisäänrakennetuissa ominaisuuksissa. Alias tekee siitä kuitenkin hyödyllisen arjessani, koska en jaksa muistaa kirjoittaa joka kerta: git diff -w --word-diff=color --ignore-space-at-eol.
Määritellään:
Näytetty katkelma kattaa yli 3 000 commitin laajuisen alueen Tensorflow-repossa näyttämällä vain ”merkityt” commitit (tagit tai haarojen kärjet).
Päätetään tämä taso ja johdatellaan luontevasti seuraavaan tarkastelemalla luultavasti hyödyllisintä monimutkaisia argumentteja käyttävien aliasten käyttötapaa: mahdollisuutta luoda entistäkin räätälöidympiä, omiin mieltymyksiisi sopivia git log -komentoja hyödyntämällä mukautettuja muotoiluja. En halua tehdä tästä varsinaisten muotoiluvaihtoehtojen opasta, joten mennään suoraan asiaan – saat pian kiinni ideasta. Kaikki tämä on dokumentoitu perusteellisesti git help log -komennon Pretty formats -osiossa.
Tässä on päivittäinen työkaluni:
Taso 4: Pretty formats – siisti aliaksesi uudelleenkäytettävyyden avulla
Tällä tasolla siirrymme Git-aliasten välittömän maailman ulkopuolelle. Opetan, miten voit hyödyntää vähän tunnettua mukautettujen pretty formatien ominaisuutta aliastesi siistimiseen ja uudelleenkäytettävyyden merkittävään parantamiseen.
(Todelliset aliakset olivat paljon pidempiä, mutta niissä kaikissa käytettiin samaa muotoilumerkkijonoa.)
Ja monia vastaavia. Tämä teki muotoilun, värityksen ja muiden vastaavien asioiden säätämisestä todella ärsyttävää aina, kun halusin tehdä muutoksia.
Nykyään Gitin uudemmissa versioissa aliakset voivat viitata toisiinsa, joten yllä olevaa voi parantaa huomattavasti esimerkiksi näin:
Mutta käy ilmi, että on olemassa parempi vaihtoehto.
(Lisätietoja on yllä linkitetyssä dokumentaatiossa.)
Löysin aivan liian myöhään matkani varrella, että Gitissä voi määritellä omia mukautettuja ”pretty”-muotoiluja Git-asetuksissa. Kun löysin tämän ominaisuuden, se oli mahtavaa!
Nämä muodot voidaan määrittää konfiguraatiosi [pretty]-osiossa (tai komennolla git config –global pretty.myformat …..) näin:
Kun olen määrittänyt nämä, voin käyttää niitä milloin tahansa suorittaessani Git log -komennon:
Tämä tarkoittaa myös, että voin kirjoittaa kaikki oudot log-aliaseni käyttämään omaa pretty-muotoani, jolloin minulla on yksi paikka, jota muokata aina mieltymysteni muuttuessa.
Näiden pretty-muotojen määrittämisen toinen etu on, että voin käyttää niitä myös "tarpeen mukaan" suorittaessani hetkessä syntyviä log-komentoja.
Taso 5: Etuliitteet – Gitin toiminnan ohittaminen tietyissä Git-alikomennoissa
Tason 5 myötä, tämän blogikirjoituksen osion päätteeksi, tutustumme Git-aliasien varsin tuntemattomaan ominaisuuteen, joka hyödyntää toista, niin ikään melko tuntematonta ominaisuutta.
Git-aliasit voivat välittää valintoja paitsi Git-alikomennolle myös itse git-komennolle. Jos ajattelet: "En tiennyt, että Git-komennolla oli valintoja", et luultavasti ole ainoa.
Yksi hyödyllinen ja helposti selitettävä esimerkki on sivutuksen hallinta. Oletusarvoisesti Git välittää yli ruudullisen mittaisen tulosteen lessille (tai muulle määritetylle sivuttajalle), kun taas ruudullista lyhyempi tuloste näytetään suoraan. Gitin avulla voimme kuitenkin halutessamme ohittaa tämän toiminnan, esimerkiksi näin:
Katsotaan, miten tätä voisi hyödyntää aliasissa. Esimerkiksi:
Toinen hyvä tapa hyödyntää tätä ominaisuutta on käyttää sitä yhdessä Gitin kyvyn kanssa ohittaa konfiguraatioasetuksia tilapäisesti.
Gitissä voit käyttää -c-valintaa ohittamaan konfiguraatioarvon vain tämän yksittäisen komennon ajaksi: i.e., git -c <config override> <subcommand>.
Tätä voi käyttää myös aliasina:
Huomaa: Tämä eroaa komennon git commit --author= käytöstä, sillä se asettaa sekä kirjoittajan että committerin identiteetin, kuten seuraava esimerkki osoittaa:
Mitä seuraavaksi Git-blogikirjoitussarjassa?
Olemme käyneet läpi hieman Git-aliasien perusteita laajemmin. Näimme, miten ne voivat olla erittäin hyödyllisiä päivittäisessä työssä, usein käyttämissämme komennoissa sekä komennoissa, joita käytämme niin harvoin, ettemme muista niitä. Poikkesimme myös hieman tavanomaisten Git-aliasien ulkopuolelle kokeilemalla itse Gitin valintoja – ominaisuutta, josta useimmat käyttäjät eivät edes tiedä.
Tähän on hyvä päättää ja jättää sinut odottamaan toista osaa, jossa jatkamme seuraavista aiheista:
!ei-Git-komennot: enemmän "bangia" rahoille.
Aliasien uudelleenkäyttö.
Toimintojen putkittaminen: Unix-työkalujen ketjuttaminen lisää toimintaa tai hulluutta varten.
Bash-funktiot voittoon.
Yli laidan meneminen, sillä rajat löytyvät vain ne ylittämällä.
Bonusosio, jossa tutustumme Git-aliasien vaihtoehtoihin.
Siirry toiseen osaan!
- DevOps
- CI/CD
Subscribe to our newsletter
Related blogs