Differences between revisions 13 and 14
Revision 13 as of 2022-10-02 22:02:46
Size: 6086
Comment:
Revision 14 as of 2023-02-14 09:58:03
Size: 6427
Editor: solbu
Comment:
Deletions are marked like this. Additions are marked like this.
Line 23: Line 23:

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.<<BR>>
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.

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

* Denne kan finskrives etterhvert

hvordan bruker jeg git i følgende scenario. 1. 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 intutive for meg. 1) git config påull.rebase false # merge 2) git config pull.rebase true # rebase 3) git config pull.ff only # fast-forward only Malinux: 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) jeg gjorde en commit i går, så da antar jeg at ja, jeg har gjort en commit er origin remte-namn og master branch-namn? ja du kan evt. ta vare på endringane dine ved git checkout -b noko-junk takk, ah, ser at det kan autocompletes :) det gjør det jo enklere kjetilho: aha og så tilbake til git checkout master og reset i master mhm, tror ikke jeg trenger det jeg gjorde, for pere har lagt ut noe med mer relevant og utfyllende enn jeg tenkte å få ut, bare for å få noe ut men kan jo prøve å ta vare på for å teste det Malinux: 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). pere: oki, dette må jeg notere

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