Navigering
Det er nyttig å kunne grunnleggende navigering i terminalen. Plutselig befinner du deg i en situasjon der du må navigere deg rundt på en Linux-server uten grafisk brukergrensesnitt, og kun har terminalen tilgjengelig.
De følgende kommandoene er nok til å kunne flytte seg litt rundt i filsystemet, og åpne prosjekt i VS Code. Kommandoene under fungerer hvert fall i bash, zsh og Powershell. Om du pleier å bruke CMD på Windows, bytt heller til Git Bash eller Windows Terminal og Powershell Core.
Noen forkortelser som brukes i de fleste shell:
"." betyr "nåværende mappe"
".." betyr "mappen over nåværende mappe"
Kommando | Beskrivelse |
---|---|
ls -a | Lister opp filer og mapper inni den mappen du befinner deg i. -a er valgfritt, og tar med "skjulte" filer. |
cd .. | Navigerer til mappen over nåværende mappe. |
cd mappe | Navigerer inn i "mappe". (cd = change directory) |
mkdir mappenavn | Oppretter en mappe med navn "mappenavn" |
code . | Åpner nåværende mappe i VS Code (dersom VS Code ble lagt til i Path under installering). |
clear | Fjerner alt i terminalvinduet. |
Bash/ZSH touch filnavn PWS: New-Item filnavn | Lager en fil med navn "filnavn" i nåværende mappe. |
Bash/ZSH rm -rf mappe PWS: Remove-Item -Force -Recurse mappe | Sletter "mappe" og alt innhold. "rm" bety Remove, og -rf betyr "recursive" og "force". Hvis man bare skal slette en fil, trenger man ikke -r eller -f. Ikke bruke denne kommandoen uten å tenke dere om, da man plutselig kan slette litt mer enn det man hadde tenkt. |
Tips:
De fleste terminaler støtter en eller annen form for auto-fullføring. Dette er vanligvis Tab-tasten. Prøv ut selv, begynn å skrive "cd mappenavn" og trykk "Tab" før du har skrevet navnet på mappen ferdig.
Man kan også bla gjennom kommandoer som har kjørt ved å bruke piltastene (pil opp for forrige kommando).
Eksempel
Her er et eksempel på hvordan man kan lage en ny fil som heter "world.java" i en ny mappe som heter "hello" inne i minegenkode:
Her lages først mappen på feil sted, så vi bruke "rm -rf"-kommandoen for å fjerne den.
Hvis vi åpner VS Code, så ser vi at filen ble laget der den skulle:
Git i terminal
I starten kan det være vanskelig å skjønne hvordan Git fungerer, og dersom man i tillegg ikke har brukt terminalen før kan dette være ekstra utfordrende. Her er noen eksempler som vil være nok til grunnleggende bruk.
Klone prosjekt fra Gitlab
- Finn url-en til prosjektet du ønsker å klone, for eksempel ved å trykke på denne knappen:
Naviger i terminalen til du har funnet mappen der du ønsker å ha prosjektet og kjør:
git clone https://gitlab.stud.idi.ntnu.no/tdt4100/v2022/students.git prosjektnavn
"prosjektnavn" er et valgfritt argument som blir navnet på prosjektmappen. Hvis det utelates vil mappen få det samme navnet som Gitlab-prosjektet, i dette tilfellet "students".
Hente ned oppdateringer fra Gitlab
git pull
Scenario:
Vi har gjort en endring i filen Account.java, og vil laste opp denne oppdateringen til Gitlab.
Før vi kan laste opp endringen, må vi "stage" filen, og lage en "commit". Så kan vi "pushe" denne commit-en til Gitlab.
For å "stage" en fil bruker man git add kommandoen. Man kan enten bruke git add . for å legge til alle endringer, eller legge til enkeltfiler ved git add <filnavn>
Her bruker vi git status for å sjekke hvilke filer som er endret.
Ved å bruke "-m" etter "commit", kan man skrive en commit-melding direkte i terminalen. Om man kun kjører git commit, så vil det åpne seg et tektsredigerings-verktøy (vanligvis Vim) der meldingen kan skrives.
Til slutt bruker vi git push for å laste opp endringen til Gitlab. Nå kan man få tak i denne endringen på en annen PC ved å kjøre git pull.
Git i prosjektet
Git er et nyttig verktøy for deling av kode i programmeringsprosjekter. Til nå har dere kun hentet kode fra vårt repository, og ikke skrevet til egne repoer. Denne guiden skal derfor hjelpe dere til å bruke git på en fornuftig måte, og gi dere en generell forståelse av git og de viktigste funksjonene.
I VSCode kan man aksessere funksjonalitet i git på to måter, enten direkte i terminalen eller ved hjelp VSCodes innebygde funksjonalitet for git. En oversikt over disse finner du lengre nede på siden, mens vi nå går gjennom den grunnleggende funksjonaliteten i terminal.
Når dere arbeider i par, er det god standard å jobbe i «branches» i gitlab. I et repo vil man ha en master/main branch, som burde inneholde ferdig kode. Når man skal legge til ny funksjonalitet brancher man ut fra main, legger til ny kode og merger denne nye versjonen med main. Dette betyr at man oppretter en ny versjon av koden, fordi man vil unngå å redigere mainbranchen direkte i tilfelle det skulle oppstå noe problemer med koden. Man ser hvilken branch man er i nederst til venstre i VSCode
For å opprette en ny branch skriver man git checkout -b navnet_på_branch. Man vil da ha opprettet en branch lokalt på egen PC. For å få denne over til gitlab, må man pushe den vha kommandoen git push. Første gangen branchen blir pushet må dere bruke kommandoen git push --set-upstream origin navnet_på_branch, eller
git push -u origin navnet_på_branch.
Gratulerer, nå har du laget en branch som eksisterer både lokalt på din PC, og i gitlabrepositoriet ditt. Arbeidsflyten er nå som følger: du skriver kode, pusher denne til den nye branchen din, skriver ny kode, pusher etc., helt til funksjonaliten du skulle få ferdig i branchen din er ferdig. Måten du pusher på er som følger: først må du passe på at du er i riktig branch. Hvis du er i main kan du branche til navnet_på_branch ved hjelp av kommandoen git checkout navnet_på_branch (merk at du ikke trenger å bruke -b i kommandoen siden branchen allerede er opprettet). Når du nå er i branchen, så angir du hvilke filer du har endret, og som du vil oppdatere i repoet ditt. Dette gjøres ved kommandoen git add filnavn eller git add . hvis du vil endre alle filene dine. Når dette er gjort kan du skrive git commit -m «beskrivelse av hva commiten gjør», og til slutt git push. Da skal filene i repoet være oppdatert til versjonen du har på din PC.
Når du er ferdig med oppgaven du skulle løse i branchen, oppretter du en "merge request" i gitlab, under "merge requests" i tremenyen til venstre i gitlab.
Dette betyr at du har gjort ferdig arbeidet i branchen, og at du har pullet main inn i din branch. Versjonen av koden på din branch er dermed den mest oppdaterte i repoet, og du ønsker at dette skal bli den nye versjonen i main. Det er god konvensjon å be partneren på prosjektet om å pulle branchen (assigne merge requesten til partneren) og sjekke at denne fungerer før h*n godkjenner merge requesten. Måten man puller main inn i sin egen branch på er ved hjelp av kommandoen git pull main når man er i sin egen branch. Om koden i main er endret vil man bli bedt om å gå gjennom endringene nye branchen i forhold til main, og bestemme hvilke man vil beholde og hvilke som skal forkastes. Når merge requesten er godkjent er det ok å slette branchen, slik at man ikke ender opp med veldig man branches. Dette gjøres enkelt i gitlab, ved å trykke på søppelbøtteikonet på branchen under repository → branches. Man kan også slette en remote (branch som er i repoet på git) branch ved hjelp av kommandoen git push origin --delete navn_på_branch. Man sletter lokale brancher ved kommandoen git branch -d navne_på_branch eller git branch -D navnet_på_branch hvis man ønsker å force slettingen.
Til slutt noen nyttige kommandoer: git status gir deg en oversikt over endringer i koden din sammenlignet med versjonen i main. git fetch kan brukes for å få tak i nylig opprettede brancher, mens git pull brukes for at din lokale versjon av koden skal være lik den i det repoet du puller fra.
Git cheat sheet
Her er et ark med en god samling kommandoer:
Snarveier for git i VSCode
Denne knappen åpner "git-menyen".
Ved å klikke på de tre prikkene får man opp alle de nødvendige funksjonene til Git:
Push/Pull snarvei
For å synkronisere prosjektet klikker man på denne knappen nede i venstre hjørne:
Eksempel
Du har laget en ny fil, og vil laste opp dine endringer (NB: Dette virker ikke om man ikke har skrive-tilgang til gitlab-prosjektet).
I git-menyen ser man alle endringer som er gjort. Klikk på "+" for å "stage" endringen. (Når man committer er det kun endringer som er "staged" som blir med.)
Skriv en commit-melding, og klikk på hake-symbolet for å lage en commit:
For å laste endringene opp til gitlab (med en push), enten klikk på synkroniseringssymbolet nede til venstre, eller finn "push"-kommandoen i git-menyen: