Kort innføring i Git

Vi har en gitlab-server kjørende på git.nuug.no, hvor NUUGs hjemmeside og kalender ligger.
Derfor trenger du ikke lenger geekbay-konto for å endre nettsiden, du trenger en konto på gitlabben vår.

Noen av brukerne som hittil har brukt CVS til å oppdatere nuug.no ønsket en guide i bruk av Git, så her er et forsøk.
De fleste av CVS-kommandoene finnes også i Git, man bytter bare ut cvs med git. Men det er noen forskjeller.
Git kan legge til hele mapper i en jafs, mens CVS måtte legge til mapper separat for deretter å legge til filene inni.

Merk: For å kunne bruke gitlab-en vår må du ha bruker på git.nuug.no, og du bruke ssh og ssh-nøkler.

Eksempelvis kan denne:

cvs add mappe/
cd mappe
cvs add fil-1 fil2

… byttes ut med dette:

git add mappe

Merk at til forskjell fra cvs sporer ikke git mapper, git sporer utelukkende filer.
Det er derfor ikke lenger nødvendig å sjekke inn en tom mappe i git for så å opprette
innholdet. I git lager du bare en tom mappe, oppretter innholdet og først nå kan
du sjekke inn mappen, fordi nå er det filer der som kan sjekkes inn.

Oppdatering av repo er også litt annerledes med Git.
Med CVS kjøres en av disse variantene for å sjekke repoet for nye endringer.

cvs update -d
cvs -q update -d

I Git er det mindre å skrive.

git pull

Utsjekking av repo

Utsjekking av git-repo er litt annerledes enn med CVS. Eksempelvis,
for å sjekke ut NUUGs web-mappe brukes følgende kommando, dette
trenger du kun å gjøre én gang.

git clone git@git.nuug.no:nuug/nuug-web.git

Da ble git-repoet klonet til din lokale maskin og mappen heter nuug-web
Vil du velge det lokale mappenavnet selv – for eksempel min-nuug-mappe – gjøres det på følgende måte.

git clone git@git.nuug.no:nuug/nuug-web.git min-nuug-mappe

Da havner git-repoet inni min-nuug-mappe i stedet for nuug-web.
Det er ikke viktig hva mappen heter, det viktige er at du vet hvor det er.

Enkel innføring i git-kommandoer

Når du har gjort endringer du vil sjekke inn kan du bruke  git status  for
å se hvilke filer som er endret. Skal du sjekke inn alle filer og mapper som har
endringer kjører du følgende.

git add . 

Kjør gjerne «git status» før du committer for å kontrollere at du ikke sjekker
inn flere filer/mapper enn du hadde tenkt. Vil du derimot heller sjekke inn én
og én fil/mappe gjøres det ved å definere filen eller mappen i stedet for punktumet.

git add fil
git add mappe/

Når du er klar til å committe kjører du:

git commit -m "commit-melding"

Nå er endringene lagret i ditt lokale repo, men det er enda ikke sendt inn til NUUGs sentrale gitlab.
Det gjøres slik:

git pull (for å sikre at ingen andre har sendt inn endringer i mellomtiden)
git push

Etter maks 5 minutter vil endringene som er push'et dukke opp på nuug.no.
(Eller kjør sudo push-web på geekbay; merk at push-adict er innbakt i push-web
etter overgang til Git, fordi det er samme repo som brukes og Git sjekker ut alt
eller ingenting.)

Detaljert utføring i git

Fjerne lokale commits

* Dette er log-paste fra en IRC-sesjon. Den kan finskrives etterhvert.

Hvordan bruker jeg git i følgende scenario:

Jeg har gjort noen endringer lokalt, men vil ikke pushe dem oppstrøms, og jeg vil derfor heller hente ned siste versjon av oppstrøms ned til lokalt og skrote endringene jeg gjorde lokalt når jeg kjører git pull, så har jeg 3 forslag til hva jeg kan gjøre, og ingen av dem er intuitive for meg.

  1. git config pull.rebase false # merge
  2. git config pull.rebase true # rebase
  3. git config pull.ff only # fast-forward only

har du gjort commit? viss ikkje, er git stash enklast om du vil fjerne dine commits, kan du gjere git reset --hard origin/master (juster evt. remote-namn og branch-namn)

Du kan eventuelt ta vare på endringane dine ved git checkout -b noko-junk, og så tilbake til git checkout master og reset i master

Hvis det er en innsjekk du vil ha bort, så kan du bruke git reset HEAD^; git checkout .
«reset HEAD^» betyr hopp tilbake en innsjekking, og «checkout .» ber git om å droppe alle lokale endringer (litt ala «git stash», bare uten å ta vare på endringene).

grupper/sysadmin/tips/git (last edited 2023-02-24 23:11:13 by ThomasGramstad)