Meny for Per-Arne's Git Good!
Fag og prosjekt Per-Arne's Git Good!
På denne siden

Kommandoreferanse

Les gjeldende tilstand med git status og en diff før du endrer den. COMMIT, MERGE, BAD, GOOD og URL er plassholdere; navn på brancher og filer er eksempler. Alle kommandoene her virker likt i Git 2.40 til 2.52.

Velg riktig verktøy

Du vil Bruk Ikke
Lagre en endring git add → git diff --staged → git commit git commit -a uten å se etter
Se hva andre har publisert git fetch → git log --oneline --graph --all git pull i blinde
Hente inn andres arbeid git pull --ff-only, eller velg --rebase / --no-rebase git pull uten å velge strategi
Publisere etter en avvist push fetch → integrer → test → git push git push --force
Kaste ustagede endringer i én fil git restore README.md git reset --hard
Fjerne en fil fra staging, men beholde endringen git restore --staged README.md git rm
Angre en commit andre allerede har git revert COMMIT git reset + tvungen push
Rydde i commits bare du har git commit --amend, git rebase -i, git reset --soft å skrive om en delt branch
Legge arbeid til side en stund git stash push -u, eller en commit på en branch å slette filer
Redde en commit som ser tapt ut git reflog → git branch rescue COMMIT → sjekk den å rydde først
Finne commiten som ødela noe git bisect å lese hver eneste commit

Opprett og undersøk

Kommando Hva den gjør
git --version Vis installert Git-versjon.
git init -b main Lag et repository der første branch heter main.
git clone URL Kopier et repository med hele historikken, kall remoten origin og sjekk ut standardbranchen.
git config --global user.name "Name" Sett forfatternavnet på commitene dine. Det logger deg ikke inn noe sted.
git config --global user.email "you@example.invalid" Sett forfatteradressen på commitene dine.
git config --show-origin --list Vis alle innstillinger og filen hver av dem kommer fra.
git status Vis branch, status mot upstream, stagede, ustagede og usporede filer.
git status --short Filstatus i to kolonner: staging-området til venstre, arbeidsmappen til høyre.
git diff Sammenlign sporede arbeidsfiler med staging-området. Usporede filer vises ikke.
git diff --staged Sammenlign staging-området med HEAD: det neste commit vil lagre.
git show HEAD Vis metadata og endring for en commit.
git log --oneline --graph --all Tegn historikken som kan nås fra alle refs: brancher, remote-tracking-brancher og tagger.
git log main..feature Commits på feature som main ikke har.
git diff main...feature Endringen på feature siden den skilte lag med main.
git merge-base main feature Vis merge-basen: den beste felles forfaren til to commits.
git blame README.md Vis hvilken commit som sist endret hver linje.
git log -S "text" Finn commits som endret hvor mange ganger teksten forekommer, altså la den til eller fjernet den.
git cat-file -p HEAD Skriv ut det rå commit-objektet: tre, foreldre, forfatter, melding.

Lagre små endringer

Kommando Hva den gjør
git add README.md Kopier denne versjonen av filen til staging-området. Senere endringer stages ikke automatisk.
git add -p Velg biter én og én for en avgrenset commit.
git add -A Stage nye, endrede og slettede filer overalt. Se på diffen først.
git commit -m "Explain why" Lagre staging-området som en ny commit og flytt gjeldende branch. Ingenting sendes noe sted.
git commit --amend Erstatt siste commit med en ny. Bare for commits ingen andre har.
git rm old.txt Slett en sporet fil og stage slettingen.
git mv old.txt new.txt Gi en fil nytt navn og stage det. Git oppdager navnebytter ved å sammenligne snapshots.
git check-ignore -v build/output.log Vis hvilken ignoreringsregel som treffer. Ignorering påvirker ikke filer som allerede er sporet.

Brancher og integrasjon

Kommando Hva den gjør
git branch List lokale brancher. git branch -vv viser i tillegg upstream og foran/bak.
git branch feature Lag en branch ved HEAD uten å bytte til den.
git switch -c feature Lag en branch ved HEAD og bytt til den.
git switch main Bytt branch; nekter hvis ucommittede endringer ville blitt overskrevet.
git switch --detach HEAD~1 Se på en gammel commit. Lag en branch hvis du vil beholde arbeid du gjør der.
git branch -d feature Slett en merget branch. Nekter hvis commitene ikke er merget.
git merge feature Integrer feature: fast-forward hvis mulig, ellers en merge-commit.
git merge --ff-only feature Integrer bare med fast-forward; nekt hvis linjene har delt seg.
git merge --no-ff feature Lag en merge-commit selv når en fast-forward er mulig.
git merge --squash feature Stage den samlede endringen fra feature uten å committe; neste commit får én forelder.
git merge --abort Avbryt en pågående merge og gå tilbake dit du var.
git merge --continue Fullfør en merge etter at konfliktene er løst og staget.
git rebase main Spill commitene på branchen din på nytt oppå main. De får nye ID-er.
git rebase -i main Endre rekkefølge, omformuler, squash, fixup eller dropp egne upubliserte commits.
git rebase --continue Fortsett etter at en konflikt er løst og staget.
git rebase --abort Gå tilbake til tilstanden før rebasen startet.
git rebase --skip Dropp commiten som spilles på nytt, og fortsett. Vit hvilket arbeid du utelater.
git range-diff main feature@{1} feature Sammenlign en serie commits før og etter en rebase.
git cherry-pick COMMIT Kopier endringen i én commit til gjeldende branch som en ny commit.
git tag try-1 Lag en lightweight tag: bare et navn på HEAD-commiten.
git tag -a v1.0 -m "Release 1.0" Lag en annotated tag med melding, for utgivelser.

Samarbeid og remotes

Kommando Hva den gjør
git remote -v List remote-navn og adressene deres.
git remote add origin URL Gi en adresse et navn. Ingenting lastes ned.
git remote rename origin shared Gi en remote nytt navn, sammen med remote-tracking-brancher og upstream-innstillinger.
git remote set-url origin URL Endre adressen til en remote.
git ls-remote origin Spør remoten hvilke refs den har akkurat nå.
git fetch Last ned nye commits og flytt origin/…-refs. Branchene og filene dine står urørt.
git fetch --prune Fjern også origin/…-refs der branchen er slettet i remoten.
git pull --ff-only Fetch, og spol så bare fram. Fetch-halvdelen skjer selv om integrasjonen nektes.
git pull --no-rebase Fetch, og merge så.
git pull --rebase Fetch, og spill så dine lokale commits som upstream mangler, på nytt øverst. Bare for commits ingen andre har.
git push -u origin feature Publiser en branch og gjør origin/feature til upstream.
git push Send gjeldende branch til upstream-branchen med samme navn. Godtas bare som fast-forward.
git branch -u origin/main Sett upstream for gjeldende branch.
git push origin --delete feature Slett en branch i remoten, etter avtale. Andre kloner beholder sin.
git push origin v1.0 Send én tag. En vanlig push sender ikke tagger.
git push --force-with-lease Overskriv remote-branchen bare hvis den fortsatt står der din origin/… sier. For din egen omskrevne branch, aldri for en delt.

Angre og redde

Kommando Hva den gjør
git restore README.md Erstatt arbeidsfilen med den stagede versjonen. Ustagede endringer går tapt.
git restore --staged README.md Fjern fra staging: kopier HEAD-versjonen til staging-området, behold arbeidsfilen.
git restore --source HEAD~1 -- README.md Ta tilbake en eldre versjon av en fil i arbeidsmappen uten å flytte HEAD.
git reset --soft HEAD~1 Flytt branchen bakover; behold staging-området og arbeidsmappen.
git reset HEAD~1 Flytt branchen bakover og tilbakestill staging-området; behold arbeidsmappen (--mixed er standard).
git reset --keep HEAD~1 Som --hard for commitene du flytter forbi, men behold ucommittede endringer; nekter hvis de ville blitt overskrevet.
git revert COMMIT Legg til en ny commit som opphever en gammel. Trygt på delt historikk.
git revert -m 1 MERGE Angre en merge-commit og behold siden til første forelder.
git reflog List hvor HEAD har vært. Bare lokalt, og oppføringene utløper.
git branch rescue HEAD@{1} Fest en commit fra reflog til en branch så den ikke kan forsvinne.
git stash push -u Legg sporede endringer og usporede filer til side. Ignorerte filer krever -a.
git stash list List stash-oppføringer. De er lokale; en vanlig push sender dem ikke.
git stash apply Bruk nyeste stash på nytt og behold oppføringen.
git stash pop Bruk den på nytt og fjern oppføringen; den beholdes ved konflikt.
git clean -nd Forhåndsvis hvilke usporede filer og mapper som ville blitt slettet.

Feilsøk og skaler

Kommando Hva den gjør
git bisect start BAD GOOD Start et binærsøk mellom en dårlig og en god commit.
git bisect good / git bisect bad Merk commiten som er sjekket ut; Git sjekker ut neste kandidat midt i det som gjenstår.
git bisect run sh check.sh La et skript avgjøre: exit 0 er god, 1–127 unntatt 125 er dårlig, 125 hopper over.
git bisect reset Avslutt søket og gå tilbake dit du startet.
git worktree add -b fix ../fix Sjekk ut en ny branch i en mappe til som deler samme repository.
git worktree remove ../fix Fjern en ren ekstra worktree.
git check-attr -a -- README.md Vis attributtene som gjelder for en fil, som linjeskift- og diff-behandling.
git sparse-checkout set src docs Sjekk bare ut disse mappene og filene på toppnivå. Historikken er uendret.
git submodule update --init --recursive Hent og sjekk ut de låste versjonene av submoduler.
git lfs track "*.psd" Legg til en Git LFS-regel i .gitattributes, og commit den sammen med filene. Git LFS må installeres separat.
git bundle create backup.bundle --all Skriv alle refs og historikken deres til én fil. Ucommittet arbeid er ikke med.
git bundle verify backup.bundle Sjekk at en bundle er gyldig, og at dette repositoryet har commitene den bygger på. Øv på å gjenopprette fra den med git clone backup.bundle.
git fsck Kontroller objektdatabasen. Objekter som ingen ref peker på (dangling/unreachable), er normale, ikke skade.

Faresonen

Disse kommandoene kaster arbeid eller overskriver historikk. Før du kjører en av dem, sjekk om det finnes et tryggere verktøy for jobben.

Kommando Hva som kan gå tapt Tryggere alternativ
git reset --hard Alle ucommittede endringer i sporede filer, og usporede filer som står i veien for sporede, uten angremulighet. Committet arbeid kan fortsatt finnes i git reflog. git stash push -u først, eller git reset --keep, eller git restore for én fil. På delt historikk: git revert.
git clean -fd Usporede filer og mapper. Git har ingen kopi av innholdet slik det er nå, så ingenting kan gjenopprette det. git clean -nd for å forhåndsvise, git clean -id for å velge, eller git stash push -u.
git push --force Commits på remote-branchen som du ikke har, som regel en kollegas. Etter en avvisning: hent, integrer og push vanlig. For å oppdatere din egen omskrevne branch: git push --force-with-lease, gjerne med --force-if-includes (Git 2.30+).

Den samme forsiktigheten gjelder git branch -D, git checkout -- . og git stash drop. Når noe har gått galt: stopp, kjør git status og git reflog, og lag en branch før du rydder.

Offisielle kilder

Git-manualen · Pro Git · git push · git reset · git rebase