Magit kommer til å revolusjonere hvor digg du synes det er å jobbe med git. Ting som interactive rebaser med fixup og squashing og reordering av commits blir helt trivielt.

Magit er en plugin til Emacs. Men du trenger ikke å være Emacs-bruker for å ha glede av magit.

Jeg, for min del, er eks-Emacs-bruker, som er på IntelliJ nå. Men jeg bruker fortsatt Emacs til magit. Fordi livet er ikke det samme uten magit.

Guide versjon A: Hvis du allerede bruker Emacs

Steg 1: Installer pakken magit.

Steg 2: du er ferdig

Guide versjon B: Hvis du ikke bruker Emacs

Jeg antar at du enten er vim-bruker og vil holde deg langt unna Emacs, eller at du er IntelliJ-bruker og ikke kan noe om Emacs.

Det er tusen måter å sette opp Emacs på. Noen config-formater er accidentally turing complete, Emacs sitt config-format er det med vilje.

Dersom du er på macOS, kjører du brew install emacs. Eventuelt kan du laste ned fra emacsformacosx.com. Dersom du er på linux, installerer du Emacs med pakkesystemet ditt. Bruker du f.eks Ubuntu, kan det være lurt å finne en PPA så du får aller nyeste versjon. Dersom du er på Windows, åpner du denne, finner mappa emacs-[høyeste tall her], laster ned emacs-XX.X-x86_64.zip (for du er vel ikke på 32bit, er du vel?), pakker ut, og kjører fila bin\runemacs.exe.

Et lite triks er at du også kan åpne Emacs i terminal-modus, med emacs -nw.

Nå skal du gjøre noe som på Emacsks heter C-x C-f ~/.emacs.d/init.el RET. La meg oversette.

  1. Hold inne ctrl
  2. Uten å slippe, trykk på x, og så f
  3. Slipp ctrl
  4. Du kan nå skrive inn et filnavn for en fil du vil åpne og redigere
  5. Fjern alt som står der, med god gammeldags backspace.
  6. Skriv inn ~/.emacs.d/init.el (~ referer til “hjemmemappa” til brukeren din, og fungerer også på Windows selv om det er en unix-isme)
  7. Trykk på enter

Gratulerer, du har nå åpnet en fil i editoren/operativsystemet Emacs!

Inne i denne filen, copy/paster du inn følgende. C-y - altså ctrl+y - er “paste” i Emacs. Ikke spør.

(Hvorfor er crtl+y “paste”, spør du? I Emacs heter det teknisk sett “yank” når du paster, siden Emacs har sin egen måte å gjøre copy/paste på.)

(require 'package)
(add-to-list 'package-archives
             '("melpa" . "http://melpa.org/packages/") t)

Lagre fila med å skrive in C-x C-s. Altså: hold inne ctrl, trykk så på x, og deretter på s, uten å slippe ctrl.

Restart Emacs. Du lukker Emacs med C-x C-c.

Vi må si til Emacs at den skal refreshe lista si over tilgjengelige pakker med M-x package-refresh-contents RET.

  1. Hold inne alt/option
  2. Trykk på x
  3. Skriv inn package-refresh-contents (du får litt hjelp av en auto-complete)
  4. Slipp alt/option
  5. Trykk på enter.

Nå skal du gjøre noe som på Emacsks heter M-x package-install RET magit RET. Jeg oversetter igjen.

  1. Hold inne alt/option
  2. Trykk på x
  3. Slipp alt/option
  4. Skriv package-install (du får litt hjelp av en auto-complete)
  5. Trykk på enter
  6. Skriv inn magit
  7. Trykk på enter.

Det vil se ut som du får kritiske feilmeldinger. De er bare warnings. La gå.

For å starte magit

For å gjøre det som tilsvarer git status, gjør en M-x magit-status RET i Emacs. Jeg antar at du nå er i stand til å tolke nøyaktig hva du skal trykke på for å få til M-x magit-status RET, nå som du har lest teksten over.

Der ber den deg om å vise den en mappe hvor du finner et git-repo. Gjør det, og trykk enter.

A glorious magit appears.

Jeg har startet magit - hva nå?

Magit er et selvforklarende GUI, så lenge du leser resten av denne bloggposten.

Du står nå i magit-status. Trykk på spørsmålstegn (shift og + på de fleste norske tastatur), og du får opp et vindu hvor alt du kan gjøre er forklart. Der får du f.eks se under “Applying changes” at du kan trykke på s for å stage en fil som ligger under “Unstaged”.

Trykk på C-g for å lukke hjelpevinduet.

Bruk piltastene og naviger til en fil, trykk på “tab” for å se diffen (dersom den er staget).

Refreshe

Trykk g uten noe mere eller mindre for å refreshe i magit-status. Den driver ikke med noe smart watching eller noe for å få med seg endringer, så bare trykk en gang på g så får du latest and greatest status fra git/magit.

Lage en commit

Trykk på c for å lage en ny commit. Et vindu kommer opp hvor du kan sette flagg som --force. Du kan trykke på a for å gjøre en “amend” (altså legg til endringene på eksisterende committ). Eller bare trykke på c igjen for å faktisk gjøre committen.

Da kommer du til et vindu hvor du skriver inn commit-meldingen din. Helt nederst la du kanskje merke til at du kan gjøre C-c C-c for å utføre committen, eller C-c C-k for å avbryte. Altså, hold inne control, og trykk på c to ganger for å committe, eller trykk på c og så k for å avbryte.

Når du er tilbake til magit-status-vinduet, trykker du bare på spørsmålstegn, så får du opp hjelpevinduet. Igjen, C-g lukker hjelpevinduet.

Pushe

Pushing er P. Da kommer det opp et nytt vindu hvor du trykker u for å pushe til default upstream, eller e for å spesifisere hvor du ønsker å pushe, f.eks til en annen branch eller remote.

WTF?

Trykk på $ for å vise loggen over alle git-kommandoene magit har kjørt.

Denne inkluderer også feilmeldinger. Hvis du f.eks pusher over ssh og ikke har noen ssh-agent satt opp, feiler magit med “Could not read from remote repository”, som man kan se helt i toppen av magit-status. Da er det altså et trykk på $ som tar deg til ytterligere informasjon om akkurat hva som gikk galt.

Tips: for å lukke logg-boksen som kommer opp, trykk C-x 0.

Go forth and git

Sjekk også ut Emacs Rocks sin episode om magit!

Etter noen dager sitter dette i fingrene, og du har blitt en (ma)git Gud som gjør alt som går an å gjøre med git, kjapt, effektivt og intuitivt.

God gitting!