Blog

10 Git-aliasten tasoa: aloittelijasta keskitason osaajaan

APR 8, 2024

Alias-nimien luominen Gitissä on tehokas ominaisuus, jonka avulla voit määrittää "pikakomentoja" pidemmille Git-komennoille – ja paljon muulle. Joillekin se on vain työkalu komentorivillä käytettävän Gitin tekemiseksi siedettäväksi, 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 yhteisiä käytäntöjä.

  • Muistaminen: Helposti muistettavia pikakomentoja monimutkaisille toiminnoille.

Blogisarjani ensimmäisessä osassa vien sinut matkalle aivan perusteista lähtien: esittelen Git-aliaksia, jotka vain säästävät pidempien komentojen kirjoittamiselta, ja etenen edistyneempiin ominaisuuksiin, joita edes monet kokeneet Git-käyttäjät eivät ole koskaan käyttäneet.

Toinen osa jatkaa tästä eteenpäin. Siinä esitellään vielä edistyneempiä käsitteitä ja sukelletaan Git-aliasien todella ”villeihin” käyttötapoihin, mukaan lukien muutamia suorastaan hulluja esimerkkejä, ennen kuin käsitellään vaihtoehtoja samojen tarpeiden ratkaisemiseksi.

Näiden tekniikoiden oppiminen ja ymmärtäminen – käytitpä muiden luomia aliaksia tai kokeilit itse rajoja – tekee sinusta tehokkaamman ja osaavamman Git-käyttäjän. Toivottavasti se tekee myös jokapäiväisestä työskentelystäsi Gitin kanssa miellyttävämpää. Matkan varrella opit todennäköisesti myös muutamia vinkkejä ja niksejä sekä tutustut Gitin ominaisuuksiin, joiden olemassaolosta et ehkä edes tiennyt.

Mitä Git-aliakset ovat ja miten ne otetaan käyttöön?

Git-aliakset korvaavat Gitin alikomentoja samalla tavalla kuin esimerkiksi Bash-aliakset korvaavat muita Bash-komentoja tai skriptejä. Gitin avulla voit yksinkertaisesti määritellä omia Git-komentoja, jotka tekevät haluamasi ja toimivat saumattomasti sisäänrakennettujen komentojen rinnalla.

Aliakset määritellään Gitin konfiguraatiohierarkiassa, mutta koska haluamme niiden yleensä toimivan kaikkialla koneellamme, globaali konfiguraatio on niille luonteva paikka.

Voit lisätä aliaksia joko muokkaamalla globaalia konfiguraatiotiedostoa suoraan tai käyttämällä komentoa git config.

Luo ensimmäinen yksinkertainen alias kokeilemalla:

Tämä lisää uuden rivin globaalin konfiguraatiotiedostosi lias]-osioon ja luo osion, jos sitä ei vielä ole. Katsotaanpa:

Myöhemmin, kun siirryt matkallasi monimutkaisempiin aliaksiin, suosittelen avaamaan tiedoston ~/.gitconfig haluamassasi editorissa ja lisäämään tai muokkaamaan aliaksia suoraan siellä.

Taso 1: Laivasti kirjoittava

Selvä, 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 muutamia muita yleisiä esimerkkejä yksinkertaisista pikakomennoista:

Yleisiä kirjoitusvirheitä varten tehdyt aliakset ovat henkilökohtainen valinta. Luo aliakset niille komennoille, joita sormesi eivät osaa kirjoittaa oikein. Oma arkkiviholliseni on switch, mutta olen päättänyt käyttää aina edellä ehdotettua lyhyttä komentoa sw sen sijaan, että loisin aliakset kaikille mahdollisille kirjoitusvirheille, joita voin tuossa yhdessä sanassa tehdä. Tässä kuitenkin muutamia esimerkkejä inspiraatioksi:

Tässä vaiheessa saatat jo miettiä, mitkä Git-komennot olisivat parhaat ehdokkaat aliaksille. Keksin tähän kiinnostavan vastauksen vuosia sitten. Gitin tavoin myös komentotulkkini (Bash, Zsh) tukee aliaksia. Siksi loin seuraavan komentotulkkiaksen .bashrc- ja .zshrc-konfiguraatiotiedostoihini:

Git command

Osa niistä 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 aliasien avulla. Ainoa syy siihen, että käytän komentoa git status niin usein aliasestani git st huolimatta, on se, että pidän paljon Git-koulutuksia, joissa sitoudun käyttämään varsinaisia komentoja.

Taso 2: Yksinkertaiset vaihtoehdot päivittäisten valitsinten kirjoittamisen välttämiseksi

On siis aika nostaa Git-aliasien äänenvoimakkuutta pykälällä. Aliaksilla voimme myös lisätä ”valitsimia” aliaksoimiimme Git-komentoihin, joten katsotaan, miten voimme hyödyntää sitä.

Yleisin käyttötapaus on helppojen aliasien luominen Git login tulosteen yleisille muunnelmille.

Esimerkiksi:

Toinen loistava ehdotus on käyttää tätä ominaisuutta niiden ärsyttävien ”puuttuvien” Git-komentojen luomiseen, joiden mielestäsi olisi pitänyt olla olemassa ja joissa voi olla vaikea muistaa, mitä komentoa ja valintaa juuri siihen yleiseen tehtävään tarvitaan.

Myönnettäköön, että monet Gitin käyttäjät eivät 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 loistava oppimismahdollisuus.

Taso 3: Monimutkaiset argumentit auttavat muistamaan harvoin käytetyt komennot

Matkamme seuraavalla tasolla tarkastelemme aliasten käyttöä komennoissa, jotka sisältävät myös monimutkaisia argumentteja.

Tähän asti olemme keskittyneet pääasiassa usein tai yleisesti käytettyjen komentojen aliasointiin. Koska voimme nyt lyhentää myös huomattavasti monimutkaisempia komentoja, voi olla hyödyllistä mennä myös toiseen suuntaan ja käyttää aliaksia:

  • Harvoin käytettyihin vaikeasti muistettaviin Git-tehtäviin.

  • Hankalasti kirjoitettavien komentojen helpottamiseen.

Näin voit hyödyntää käteviä Git-ominaisuuksia, joihin et muuten ehkä viitsisi tarttua.

Kuten näet, olen kuvannut yllä olevien esimerkkien aliakset ”rivinsisäisesti” hyödyntämällä mahdollisuutta lisätä #-kommentteja asetustiedostoosi. Tarkoitus ei ole vain helpottaa esimerkin lukemista, vaan myös vahvasti suositella, että teet näin omassa asetuksessasi. Minulta meni aivan liian monta vuotta ennen kuin opin tämän kantapään kautta, ja nyt minulla 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ä, kun markdown-tiedostolle suoritetaan git diff.

Git diff

Lisätään nyt alias:

Ja käytetään sitä sen sijaan:

Git wdiff

Tämä on selvästi paljon siistimpi ja helpompi hahmottaa. Taikuutta ei tee alias itse, vaan kyse on Gitin sisäänrakennetuista ominaisuuksista. Alias tekee niistä kuitenkin hyödyllisiä arjessani, koska en viitsi muistaa kirjoittaa joka kerta: git diff -w --word-diff=color --ignore-space-at-eol.

Määritellään:

Git

Näytetty katkelma kattaa yli 3 000 commitin laajuisen alueen Tensorflow-repositoriossa näyttämällä vain ”merkityt” commitit (tagit tai haarojen kärjet).

Päätetään tämä taso ja siirrytään luontevasti seuraavaan tarkastelemalla luultavasti hyödyllisintä monimutkaisia argumentteja sisältävien aliasten käyttötapaa: voit luoda entistä yksilöllisempiä omiin mieltymyksiisi sopivia git log -komentoja hyödyntämällä mukautettuja muotoja. En halua tehdä tästä varsinaisten muotoiluvaihtoehtojen opasta, joten mennään suoraan asiaan – saat kyllä ideasta kiinni. Kaikki on dokumentoitu perusteellisesti git help log -ohjeen Pretty formats -osiossa.

Esittelen päivittäisen luottokomennon:

Git slog

Taso 4: Pretty formats – siivoa aliaksesi uudelleenkäytettävyyden avulla

Tällä tasolla siirrymme Git-aliasten välittömän maailman ulkopuolelle, ja näytän, miten voit hyödyntää vähän tunnettua mukautettujen pretty formatien ominaisuutta aliastesi siivoamiseen ja uudelleenkäytettävyyden huomattavaan parantamiseen.

(Todelliset aliakset olivat paljon pidempiä, mutta niissä kaikissa käytettiin samaa muotoilumerkkijonoa.)

Ja monia vastaavia. Tämä teki muotoilun, värityksen ja muiden asetusten säätämisestä todella ärsyttävää joka kerta.

Nykyään Gitin uudemmissa versioissa aliakset voivat viitata toisiin aliaksiin, joten yllä olevaa voi parantaa huomattavasti esimerkiksi näin:

Mutta käy ilmi, että on olemassa parempi vaihtoehto.

(Katso lisätietoja yllä linkitetystä dokumentaatiosta.)

Havaitsin aivan liian myöhään, että Gitissä voi määritellä omia mukautettuja ”pretty”-muotoja Gitin asetuksissa. Kun löysin tämän ominaisuuden, se oli mahtavaa!

Voit määrittää nämä muodot 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. Silloin minulla on yksi paikka, jota muokata, kun mieltymykseni muuttuvat.

Näiden pretty-muotojen määrittämisestä on sekin hyöty, että voin käyttää niitä myös "tarvittaessa", kun suoritan tilannekohtaisia log-komentoja.

Taso 5: Etuliitteet – ohita Gitin toiminta tietyissä Git-alikomennoissa

Tasolla 5, tämän blogikirjoituksen osan päätteeksi, tutustumme Git-aliasten melko tuntemattomaan ominaisuuteen, joka hyödyntää toista, niin ikään melko tuntematonta ominaisuutta.

Git-aliaset voivat välittää valintoja Git-alikomennon lisäksi myös itse git-komennolle. Jos ajattelet: "En tiennyt, että Git-komennolla on valintoja", et todennäköisesti ole ainoa.

Yksi hyödyllinen ja helposti selitettävä esimerkki on sivutuksen hallinta. Oletusarvoisesti Git välittää näyttöruudullista pidemmän tulosteen less-komennolle (tai muulle määritetylle sivuttajalle), kun taas näyttöruudullista lyhyempi tuloste näytetään suoraan. Gitissä tämän toiminnan voi kuitenkin halutessaan ohittaa, esimerkiksi:

Katsotaan, miten tätä voisi hyödyntää aliasessa. Esimerkiksi:

Toinen hyvä käyttötapa tälle ominaisuudelle on yhdistää se Gitin kykyyn 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 aliasena:

Huomautus: Tämä eroaa komennon git commit --author= käytöstä, sillä se asettaa sekä authorin että committerin identiteetin, kuten seuraavasta esimerkistä näkyy:

Mitä seuraavaksi Git-blogikirjoitussarjassa?

Olemme käyneet läpi hieman Git-aliasten perusteita syvällisemmin. Näimme, miten hyödyllisiä ne voivat olla päivittäisessä työssä: usein käytetyissä komennoissa tai komennoissa, joita käytämme niin harvoin, ettemme muista niitä. Poikkesimme myös tavallisten Git-aliasten ulkopuolelle kokeilemalla Gitin omia valintoja – ominaisuutta, josta useimmat käyttäjät eivät vielä tiedä.

Tähän on hyvä päättää ensimmäinen osa ja jättää sinut odottamaan toista osaa, jossa jatkamme seuraavista aiheista:

  1. !muut kuin Git-komennot: enemmän "bangia" rahoille.

  2. Aliasten uudelleenkäyttö.

  3. Toimintojen putkittaminen: Unix-työkalujen ketjuttaminen lisää toimintaa tai hulluutta varten.

  4. Bash-funktiot voittoon.

  5. Yliampuminen, sillä rajat löytyvät vain ylittämällä ne.

  6. Bonuskierros, jossa tutustumme Git-aliasten vaihtoehtoihin.

Siirry osaan kaksi!

  • DevOps
  • CI/CD

Subscribe to our newsletter