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