Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
-
2.54.0
2026-04-20
-
2.53.0
2026-02-02
-
2.52.0
2025-11-17
- 2.51.1 → 2.51.2 no changes
-
2.51.0
2025-08-18
- 2.50.1 no changes
-
2.50.0
2025-06-16
- 2.47.2 → 2.49.1 no changes
-
2.47.1
2024-11-25
- 2.44.1 → 2.47.0 no changes
-
2.44.0
2024-02-23
- 2.43.2 → 2.43.7 no changes
-
2.43.1
2024-02-09
-
2.43.0
2023-11-20
- 2.41.1 → 2.42.4 no changes
-
2.41.0
2023-06-01
- 2.40.1 → 2.40.4 no changes
-
2.40.0
2023-03-12
- 2.39.4 → 2.39.5 no changes
-
2.39.3
2023-04-17
- 2.38.1 → 2.39.2 no changes
-
2.38.0
2022-10-02
- 2.35.1 → 2.37.7 no changes
-
2.35.0
2022-01-24
- 2.34.1 → 2.34.8 no changes
-
2.34.0
2021-11-15
- 2.30.1 → 2.33.8 no changes
-
2.30.0
2020-12-27
- 2.29.1 → 2.29.3 no changes
-
2.29.0
2020-10-19
- 2.27.1 → 2.28.1 no changes
-
2.27.0
2020-06-01
- 2.25.1 → 2.26.3 no changes
-
2.25.0
2020-01-13
- 2.23.1 → 2.24.4 no changes
-
2.23.0
2019-08-16
- 2.22.1 → 2.22.5 no changes
-
2.22.0
2019-06-07
- 2.21.1 → 2.21.4 no changes
-
2.21.0
2019-02-24
- 2.19.3 → 2.20.5 no changes
-
2.19.2
2018-11-21
- 2.19.1 no changes
-
2.19.0
2018-09-10
- 2.17.0 → 2.18.5 no changes
-
2.16.6
2019-12-06
- 2.15.4 no changes
-
2.14.6
2019-12-06
-
2.13.7
2018-05-22
- 2.11.4 → 2.12.5 no changes
-
2.10.5
2017-09-22
-
2.9.5
2017-07-30
- 2.8.6 no changes
-
2.7.6
2017-07-30
- 2.6.7 no changes
-
2.5.6
2017-05-05
-
2.4.12
2017-05-05
- 2.1.4 → 2.3.10 no changes
-
2.0.5
2014-12-17
SYNOPSIS
gitcheckout[-q] [-f] [-m] [<gren>]gitcheckout[-q] [-f] [-m]--detach[<gren>]gitcheckout[-q] [-f] [-m] [--detach] <incheckning>gitcheckout[-q] [-f] [-m] [[-b|-B|--orphan] <ny-grel>] [<start-punkt>]gitcheckout<tree-ish> [--] <sökvägsspec>…gitcheckout<tree-ish>--pathspec-from-file=<fil> [--pathspec-file-nul]gitcheckout[-f|--ours|--theirs|-m|--conflict=<stil>] [--] <sökvägsmönster>…gitcheckout[-f|--ours|--theirs|-m|--conflict=<stil>]--pathspec-from-file=<file> [--pathspec-file-nul]gitcheckout(-p|--patch) [<trädlikt>] [--] [<sökvägsspec>…]
BESKRIVNING
git checkout har två huvudlägen:
-
Byt grenar, med
gitcheckout<gren> -
Återställ en annan version av en fil, till exempel med
gitcheckout<incheckning> <filnamn> ellergitcheckout<filnamn>
Se ARGUMENT SÄRSKILJNING nedan för hur Git bestämmer vilken som ska göras.
-
gitcheckout[<gren>] -
Växla till <gren>. Detta ställer in den aktuella grenen till <gren> och uppdaterar filerna i din arbetskatalog. Utcheckningen kommer att misslyckas om det finns oincheckade ändringar i filer där <gren> och din nuvarande incheckning har olika innehåll. Oincheckade ändringar kommer annars att behållas.
Om <gren> inte hittas men det finns en spårningsgren i exakt en fjärr (kalla den <fjärr>) med ett matchande namn och
--no-guessinte är specificerat, behandla den som likvärdig med$ git checkout -b <gren> --track <fjärr>/<gren>
Att köra
gitcheckoututan att ange en gren har ingen effekt förutom att skriva ut spårningsinformationen för den aktuella grenen. -
gitcheckout-b<ny-gren> [<start-punkt>] -
Skapa en ny gren med namnet <ny-gren>, starta den vid <start-punkt> (standardinställningen är den nuvarande incheckningen) och checka ut den nya grenen. Du kan använda alternativen
--trackeller--no-trackför att ställa in grenens uppströms spårningsinformation.Det kommer att misslyckas om det uppstår ett fel vid utcheckning av <ny-gren>, till exempel om utcheckning av <start-punkt>-incheckningen skulle skriva över oincheckade ändringar.
-
gitcheckout-B<gren> [<start-punkt>] -
Samma som
-b, förutom att om grenen redan finns återställer den <gren> till startpunkten i stället för att misslyckas. -
gitcheckout--detach[<gren>] -
gitcheckout[--detach] <incheckning> -
Samma som
gitcheckout<gren>, förutom att den i stället för att pekaHEADmot grenen pekarHEADmot inchecknings-ID:t. Se avsnittet "FRÅNKOPPLAT HEAD" nedan för mer information.Om man utelämnar <gren> lossnar
HEADi toppen av den aktuella grenen. -
gitcheckout<trädlikt> [--] <sökvägsmönster>... -
gitcheckout<trädlikt>--pathspec-from-file=<fil> [--pathspec-file-nul] -
Ersätt de angivna filerna och/eller katalogerna med versionen från den givna incheckningen eller trädet och lägg till dem i indexet (även känt som "prepareringsytan").
Till exempel, kommer
gitcheckoutmainfile.txtatt ersättafile.txtmed versionen frånmain. -
gitcheckout[-f|--ours|--theirs|-m|--conflict=<style>] [--] <sökvägsmönster>... -
gitcheckout[-f|--ours|--theirs|-m|--conflict=<stil>]--pathspec-from-file=<file> [--pathspec-file-nul] -
Ersätt de angivna filerna och/eller katalogerna med versionen från indexet.
Om du till exempel checkar ut en incheckning, redigerar
file.txtoch sedan bestämmer dig för att ändringarna var ett misstag, kommergitcheckoutfile.txtatt ignorera alla ej köade ändringar avfile.txt.Det kommer att misslyckas om filen har en sammanslagningskonflikt och ännu inte har kört
gitaddfile.txt(eller något motsvarande) för att markera den som löst.-fkan användas för att ignorera de icke-sammanslagna filerna i stället för att misslyckas, använda--ourseller--theirsför att ersätta dem med versionen från en specifik sida av sammanslagningen, eller använda-mför att ersätta dem med det ursprungliga konfliktfyllda sammanslagningsresultatet. -
gitcheckout(-p|--patch) [<trädlikt>] [--] [<sökvägsmönster>...] -
Det liknar de två föregående lägena, men gör det möjligt att använda det interaktiva gränssnittet för att visa "diff"-utdata och välja vilka stycken som ska användas i resultatet. Se nedan för beskrivningen av alternativet
--patch.
ALTERNATIV
-
-q -
--quiet -
Tyst, undertryck feedbackmeddelanden.
-
--progress -
--no-progress -
Förloppsstatus rapporteras som standard i standardfelströmmen när den är ansluten till en terminal, såvida inte
--quietanges. Denna flagga aktiverar förloppsrapportering även om den inte är ansluten till en terminal, oavsett--quiet. -
-f -
--force -
Vid byte av gren, fortsätt även om indexet eller arbetsträdet skiljer sig från
HEAD, och även om det finns ospårade filer i vägen. Detta används för att ta bort lokala ändringar och eventuella ospårade filer eller kataloger som är i vägen.Vid utcheckning av sökvägar från indexet, misslyckas inte med ej sammanslagna poster; i stället ignoreras ej sammanslagna poster.
-
--ours -
--theirs -
Vid utcheckning av sökvägar från indexet, kontrollera steg #2 (vår) eller #3 (
deras) för ej sammanslagna sökvägar.Observera att under
gitrebaseochgitpull--rebasekan vår ochderasverka omväxlande;--oursanger versionen från grenen som ändringarna ombaseras på, medan--theirsanger versionen från grenen som innehåller ditt arbete som ombaseras.Det beror på att
rebaseanvänds i ett arbetsflöde som behandlar historiken på fjärren som den delade kanoniska, och behandlar arbetet som utförs på grenen som ombaseras som tredjepartsarbete som ska integreras, och rollen som behållare av den kanoniska historiken antas tillfälligt under ombaseringen. Som behållare av den kanoniska historiken måste historiken ses historiken från fjärren som vår (dvs. "vår delade kanoniska historik"), medan det som gjordes på sidogrenen ses somderas(dvs. "en bidragsgivares arbete ovanpå den"). -
-b<ny-gren> -
Skapa en ny gren med namnet <my-gren>, starta den vid <start-punkt> och kontrollera den resulterande utgreningen; se git-branch[1] för mer information.
-
-B<ny-gren> -
Samma som
-b, förutom att om grenen redan finns återställer den <gren> till startpunkten i stället för att misslyckas. -
-t -
--track[=(direct|inherit)] -
När du skapar en ny gren, konfigurera "uppström". Se
--tracki git-branch[1] för mer information. För enkelhetens skull innebär --track utan -b att man skapar en gren.Om inget
-b-alternativ anges, kommer namnet på den nya grenen att härledas från fjärrspårnings-grenen, genom att titta på den lokala delen av referensspecifikationen som är konfigurerad för motsvarande fjärr, och sedan ta bot den initiala delen upp till "*". Detta skulle ange att vi ska användahacksom lokal gren när vi förgrenar oss frånorigin/hack(ellerremotes/origin/hack, eller till och medrefs/remotes/origin/hack). Om det angivna namnet inte har något snedstreck, eller om ovanstående gissning resulterar i ett tomt namn, avbryts gissningen. Du kan explicit ange ett namn med-bi ett sådant fall. -
--no-track -
Skapa inte en "uppströms"-konfiguration, även om konfigurationsvariabeln
branch.autoSetupMergeär sann. -
--guess -
--no-guess -
Om <gren> inte hittas men det finns en spårningsgren i exakt en fjärr (kalla den <fjärr>) med ett matchande namn, behandla den som likvärdig med
$ git checkout -b <gren> --track <fjärr>/<gren>
Om grenen finns i flera fjärrar och en av dem namnges av konfigurationsvariabeln
checkout.defaultRemoteanvänder vi den för att göra tolkningen tydligare, även om <gren> inte är unik över alla fjärrar. Sätt den till t.ex.checkout.defaultRemote=originför att alltid checka ut fjärrgrenar därifrån om <gren> är tvetydig men finns på fjärrenorigin. Se ävencheckout.defaultRemotei git-config[1].--guessär standardbeteendet. Använd--no-guessför att inaktivera det.Standardbeteendet kan ställas in via konfigurationsvariabeln
checkout.guess. -
-l -
Skapa den nya grenens reflog; se git-branch[1] för mer information.
-
-d -
--detach -
I stället för att checka ut en gren för att arbeta med den, checka ut en incheckning för inspektion och kasserbara experiment. Detta är standardbeteendet för
gitcheckout<incheckning> när <incheckning> inte är ett grennamn. Se avsnittet "FRÅNKOPPLAT HUVUD (HEAD)" nedan för mer information. -
--orphan<ny-gren> -
Skapa en ny ofödd gren, med namnet <ny-gren>, startad från <start-punkt> och byt till den. Den första incheckning som görs på den här nya grenen kommer inte att ha några föräldrar och den kommer att vara roten till en ny historik som är helt frikopplad från alla andra grenar och incheckningar.
Indexet och arbetsträdet justeras som om
gitcheckout<start-punkt>. Detta gör det möjligt att starta en ny historik som registrerar en uppsättning sökvägar liknande <start-punkt> genom att enkelt köragitcommit-aför att göra root-incheckningen.Det kan vara användbart när trädet från en incheckning ska publiceras utan att exponera dess fullständiga historik. Det kan till exempel användas för att publicera en öppen källkodsgren av ett projekt vars nuvarande träd är "rent", men vars fullständiga historik innehåller proprietära eller på annat sätt begränsade kodbitar.
Om en frånkopplad historik ska startas som registrerar en uppsättning sökvägar som är helt annorlunda än den för <startpunkt>, bör indexet och arbetsträdet rensas direkt efter att den föräldralösa grenen har skapats genom att köra
gitrm-rf.från den översta nivån i arbetsträdet. Efteråt är det möjligt att förbereda de nya filerna, fylla i arbetsträdet igen, kopiera dem från någon annanstans, extrahera en tar-fil, etc. -
--ignore-skip-worktree-bits -
I glest utchecknings-läge skulle
gitcheckout--<sökväg>... endast uppdatera poster som matchas av <sökväg> och sparse-mönster i$GIT_DIR/info/sparse-checkout. Det här alternativet ignorerar de sparse-mönstren och lägger tillbaka alla filer i <sökväg>.... -
-m -
--merge -
Vid byte av grenar: om det finns lokala ändringar i en eller flera filer som skiljer sig mellan den aktuella grenen och den gren som växlas till, vägrar kommandot att byta gren för att bevara ändringarna i sitt sammanhang. Med det här alternativet görs dock en trevägssammanslagning mellan den aktuella grenen, innehållet i arbetsträdet och den nya grenen, och resultatet blir den nya grenen.
När en sammanslagningskonflikt inträffar, lämnas indexposterna för motstridiga sökvägar ej sammanslagna, och du måste lösa konflikterna och markera de lösta sökvägarna med
gitadd(ellergitrmom sammanslagningen ska resultera i borttagning av sökvägen).När du checkar ut sökvägar från indexet, låter det här alternativet dig återskapa den konfliktfyllda sammanslagningen i de angivna sökvägarna. Det här alternativet kan inte användas när du checkar ut sökvägar från en trädliknande källa.
När man byter grenar med
--mergekan ändringar i etapper gå förlorade. -
--conflict=<stil> -
Samma som alternativet
--mergeovan, men ändrar hur de motstridiga styckenerna presenteras och åsidosätter konfigurationsvariabelnmerge.conflictStyle. Möjliga värden ärmerge(standard),diff3ochzdiff3. -
-p -
--patch -
Välj interaktivt bitar i skillnaden mellan <trädlikt> (eller indexet, om inget anges) och arbetsträdet. De valda bitarna tillämpas sedan i omvänd ordning på arbetsträdet (och om ett <trädlikt> angavs, indexet).
Det betyder att
gitcheckout-pkan användas för att selektivt ignorera redigeringar från det nuvarande arbetsträdet. Se avsnittet "Interaktivt läge" i git-add[1] för information om hur--patch-läget.Observera att det här alternativet använder inte överläggsläget som standard (se även
--overlay), och för närvarande stödes inte överläggsläget. -
-U<n> -
--unified=<n> -
Generate diffs with <n> lines of context. The number of context lines defaults to
diff.contextor 3 if the configuration variable is unset. (-Uwithout <n> is silently accepted as a synonym for-pdue to a historical accident). -
--inter-hunk-context=<n> -
Visar sammanhanget mellan olika stycken, upp till det angivna <antal> rader, och sammanfogar därmed stycken som ligger nära varandra. Standardvärdet är
diff.interHunkContexteller 0 om konfigurationsalternativet inte är inställt.
-
--ignore-other-worktrees -
gitcheckoutvägrar när den önskade grenen redan är utcheckad eller på annat sätt används av ett annat arbetsträd. Den här inställningen gör att den ändå checkar ut grenen. Med andra ord kan grenen användas av mer än ett arbetsträd. -
--overwrite-ignore -
--no-overwrite-ignore -
Skriv tyst över ignorerade filer vid byte av gren. Detta är standardbeteendet. Använd
--no-overwrite-ignoreför att avbryta operationen när den nya grenen innehåller ignorerade filer. -
--recurse-submodules -
--no-recurse-submodules -
Genom att använda
--recurse-submodulesuppdateras innehållet i alla aktiva undermoduler enligt den incheckningen som registrerats i superprojektet. Om lokala modifieringar i en undermodul skulle skrivas över kommer utcheckningen att misslyckas om inte-fanvänds. Om ingenting (eller--no-recurse-submodules) används kommer undermodulernas arbetsträd inte att uppdateras. Precis som med git-submodule[1] kommer detta att koppla bortHEADfrån undermodulen. -
--overlay -
--no-overlay -
I standard överläggsläget, tar
gitcheckoutaldrig bort filer från indexet eller arbetsträdet. När--no-overlayanges, tas filer som finnsi indexet och arbetsträdet, men inte i <trädlikt>, bort, så att de matchar <trädlikt> exakt. -
--pathspec-from-file=<fil> -
Sökvägsmönster skickas i <fil> i stället för kommandoradsargument. Om <fil> är exakt
-används standardindata. Sökvägsmönster separeras med LF eller CR/LF. Sökvägsmönster kan citeras enligt beskrivningen för konfigurationsvariabelncore.quotePath(se git-config[1]). Se även--pathspec-file-nuloch globala--literal-pathspecs. -
--pathspec-file-nul -
Endast meningsfullt med
--pathspec-from-file. Sökvägsmönsterposter separeras med tecknet NUL och alla andra tecken tolkas bokstavligt (inklusive radbrytningar och citattecken). - <gren>
-
Gren till utcheckning; om den refererar till en gren (dvs. ett namn som, när det inleds med "refs/heads/", är en giltig referens), så är den grenen utcheckad. Annars, om den refererar till en giltig incheckning, blir din
HEAD"frånkopplad" och du är inte längre på någon gren (se nedan för detaljer).Du kan använda syntaxen
@{-N}för att referera till den N:te sista grenen/incheckningen som checkats ut med hjälp av operationen "git checkout". Du kan också ange-vilket är synonymt med@{-1}.Som ett specialfall kan du använda <rev-a>
...<rev-b> som en genväg för sammanslagningsbasen för <rev-a> och <rev-b> om det finns exakt en sammanslagningsbas. Du kan utelämna högst en av <rev-a> och <rev-b>, i vilket fall standardvärdet ärHEAD. - <ny-gren>
-
Namn på den nya grenen.
- <start-punkt>
-
Namnet på en incheckning där den nya grenen ska startas; se git-branch[1] för mer information. Standardvärdet är
HEAD.Som ett specialfall kan du använda <rev-a>
...<rev-b> som en genväg för sammanslagningsbasen för <rev-a> och <rev-b> om det finns exakt en sammanslagningsbas. Du kan utelämna högst en av <rev-a> och <rev-b>, i vilket fall standardvärdet ärHEAD. - <trädlikt>
-
Träd att checka ut från (när sökvägar anges). Om inget anges kommer indexet att användas.
Som ett specialfall kan du använda <rev-a>
...<rev-b> som en genväg för sammanslagningsbasen för <rev-a> och <rev-b> om det finns exakt en sammanslagningsbas. Du kan utelämna högst en av <rev-a> och <rev-b>, i vilket fall standardvärdet ärHEAD. -
-- -
Tolka inte fler argument som alternativ.
- <sökvägsmönster>...
-
Begränsar de sökvägar som påverkas av operationen.
För mer information, se posten sökvägsmönster i gitglossary[7].
FRÅNKOPPLAT HEAD
HEAD refererar normalt till en namngiven gren (t.ex. master). Varje gren refererar däremot till en specifik incheckning. Låt oss titta på ett kodförråd med tre incheckningar, varav en är taggad, och med grenen master utcheckad:
HEAD (hänvisar till gren 'master')
|
v
a---b---c gren 'master' (rhänvisar to incheckning 'c')
^
|
tagg 'v2.0' (hänvisar till incheckning 'b')
När en incheckning skapas i detta tillstånd uppdateras grenen för att referera till den nya incheckningen. Mer specifikt skapar git commit en ny incheckning d, vars förälder är incheckning c, och uppdaterar sedan grenen master för att referera till den nya incheckningen d. HEAD refererar fortfarande till grenen master och refererar därför nu indirekt till incheckning d:
$ edit; git add; git commit
HEAD (hänvisar till gren 'master')
|
v
a---b---c---d gren 'master' (hänvisar till incheckning 'd')
^
|
tagg 'v2.0' (hänvisar till incheckning 'b')
Det är ibland användbart att kunna checka ut en incheckning som inte finns i toppen av någon namngiven gren, eller till och med att skapa en ny incheckning som inte refereras av en namngiven gren. Låt oss titta på vad som händer när vi checkar ut incheckning b (här visar vi två sätt detta kan göras):
$ git checkout v2.0 # eller
$ git checkout master^^
HEAD (hänvisar till incheckning 'b')
|
v
a---b---c---d gren 'master' (hänvisar till incheckning 'd')
^
|
tagg 'v2.0' (hänvisar till incheckning 'b')
Observera att oavsett vilket checkout-kommando vi använder, refererar HEAD nu direkt till incheckning b. Detta kallas att vara i frånkopplat HEAD-tillstånd. Det betyder helt enkelt att HEAD refererar till en specifik incheckning, i motsats till att referera till en namngiven gren. Låt oss se vad som händer när vi skapar en incheckning:
$ edit; git add; git commit
HEAD (hänvisar till incheckning 'e')
|
v
e
/
a---b---c---d gren 'master' (hänvisar till incheckning 'd')
^
|
tagg 'v2.0' (hänvisar till incheckning 'b')
Det finns nu en ny incheckning e, men den refereras endast av HEAD. Vi kan naturligtvis lägga till ytterligare en incheckning i detta tillstånd:
$ edit; git add; git commit
HEAD (hänvisar till incheckning 'f')
|
v
e---f
/
a---b---c---d gren 'master' (hänvisar till incheckning 'd')
^
|
tagg 'v2.0' (hänvisar till incheckning 'b')
Faktum är att vi kan utföra alla vanliga Git-operationer. Men låt oss titta på vad som händer när vi sedan checkar ut master:
$ git checkout master
HEAD (hänvisar till gren 'master')
e---f |
/ v
a---b---c---d gren 'master' (refers to incheckning 'd')
^
|
tag 'v2.0' (hänvisar till incheckning 'b')
Det är viktigt att inse att ingenting i nuläget refererar till incheckning f. Så småningom kommer incheckning f (och i förlängningen incheckning e) att raderas av Gits rutinmässiga skräpinsamlingsprocess, såvida vi inte skapar en referens innan det händer. Om vi inte ännu har gått ifrån incheckning f kommer någon av dessa att skapa en referens till den:
$ git checkout -b foo # eller "git switch -c foo" (1) $ git branch foo (2) $ git tag foo (3)
-
skapar en ny gren
foo, som refererar till incheckningf, och uppdaterar sedanHEADför att referera till grenenfoo. Med andra ord, vi kommer inte längre att vara i frånkopplat-HEADläge efter detta kommando. -
på liknande sätt skapar man en ny gren
foo, som refererar till incheckningf, men lämnarHEADfristående. -
skapar en ny tagg
foo, som refererar till incheckningf, och lämnarHEADfrånkopplat.
Om vi har gått ifrån incheckning f måste vi först återställa dess objektnamn (vanligtvis med hjälp av git reflog), och sedan kan vi skapa en referens till det. För att till exempel se de två sista incheckningarna som HEAD refererade till kan vi använda något av dessa kommandon:
$ git reflog -2 HEAD # eller $ git log -g -2 HEAD
ARGUMENT SÄRSKILJNING
När du kör git checkout <något> försöker Git gissa om <något> är avsedd att vara en gren, en incheckning eller en uppsättning filer, och växlar sedan antingen till den grenen eller incheckningen, eller återställer de angivna filerna.
Om det finns någon tvetydighet kommer Git att behandla <något> som en gren eller incheckning, men du kan använda det dubbla bindestrecket -- för att tvinga Git att behandla parametern som en lista med filer och/eller kataloger, så här:
git checkout -- fil.txt
EXEMPEL
1. Sökvägar
Följande sekvens kontrollerar grenen master, återställer Makefile till två versioner bakåt, tar bort hello.c av misstag och hämtar tillbaka den från indexet.
$ git checkout master (1) $ git checkout master~2 Makefile (2) $ rm -f hello.c $ git checkout hello.c (3)
-
byt gren
-
ta en fil från en annan incheckning
-
återställ
hello.cfrån indexet
Om du vill checka ut alla C-källkods-filer från indexet kan du säga
$ git checkout -- '*.c'
Observera citattecknen runt *.c. Filen hello.c kommer också att checkas ut, även om den inte längre finns i arbetsträdet, eftersom filglobbing används för att matcha poster i indexet (inte i arbetsträdet av skalet).
Om du har en olycklig gren som heter hello.c, skulle detta steg förväxlas med en instruktion för att byta till den grenen. Du bör i stället skriva:
$ git checkout -- hello.c
2. Sammanslagning
Efter att ha arbetat i fel gren, skulle byte till rätt gren göras med hjälp av:
$ git checkout mittämne
Din "felaktiga" gren och korrekta mittämne-gren kan dock skilja sig åt i filer som du har modifierat lokalt, i vilket fall utcheckningen ovan skulle misslyckas så här:
$ git checkout mittämne error: You have local changes to 'frotz'; not switching branches.
Du kan ge flaggan -m till kommandot, vilket skulle försöka en trevägssammanslagning:
$ git checkout -m mittämne Auto-merging frotz
Efter denna trevägssammanslagning registreras de lokala modifieringarna inte i din indexfil, så git diff skulle visa dig vilka ändringar du gjort sedan starten av den nya grenen.
3. Sammanslagningskonflikt
När en sammanslagningskonflikt uppstår vid byte av grenar med alternativet -m, skulle du se något liknande:
$ git checkout -m mittämne Auto-merging frotz ERROR: Merge conflict in frotz fatal: merge program failed
Vid det här laget, visar git diff ändringarna tydligt sammanfogade som i föregående exempel, såväl som ändringarna i de konfliktfyllda filerna. Redigera och lös konflikten och markera den som löst med git add som vanligt:
$ edit frotz $ git add frotz
KONFIGURATION
Allt under den här raden i det här avsnittet är selektivt inkluderat från dokumentationen git-config[1]. Innehållet är detsamma som det som finns där:
-
checkout.defaultRemote -
När du kör
gitcheckout<något> ellergitswitch<något> och bara har en fjärr, kan den implicit återgå till att checka ut och spåra, t.ex.origin/<något>. Detta slutar fungera så fort du har mer än en fjärr med en <något>-referens. Den här inställningen gör det möjligt att ställa in namnet på en föredragen fjärr som alltid ska vinna vid särskiljning. Det typiska användningsfallet är att ställa in detta tillorigin.För närvarande används detta av git-switch[1] och git-checkout[1] när
gitcheckout<något> ellergitswitch<något> checkar ut grenen <något> på en annan fjärr, och av git-worktree[1] närgitworktreeaddrefererar till en fjärrgren. Denna inställning kan komma att användas för andra checkout-liknande kommandon eller funktioner i framtiden. -
checkout.guess -
Anger standardvärdet för alternativen
--guesseller--no-guessigitcheckoutochgitswitch. Se git-switch[1] och git-checkout[1]. -
checkout.workers -
Antalet parallella arbetare som ska användas vid uppdatering av arbetsträdet. Standardvärdet är ett, d.v.s. sekventiell exekvering. Om det sätts till ett värde mindre än ett, kommer Git att använda lika många arbetare som antalet tillgängliga logiska kärnor. Inställningen och
checkout.thresholdForParallelismpåverkar alla kommandon som utför utcheckning. T.ex. checkout, clone, reset, sparse-checkout, etc.NoteParallell utcheckning ger vanligtvis bättre prestanda för kodförråd som finns på SSD-diskar eller över NFS. För kodförråd på roterande diskar och/eller maskiner med ett litet antal kärnor fungerar standard sekventiell utcheckning ofta bättre. Storleken och komprimeringsnivån för ett kodförrådet kan också påverka hur bra den parallella versionen presterar. -
checkout.thresholdForParallelism -
När man kör parallell utcheckning med ett litet antal filer kan kostnaden för att skapa underprocesser och kommunikation mellan processer överväga vinsterna med parallellisering. Den här inställningen låter dig definiera det minsta antalet filer som parallell utcheckning ska försökas för. Standardinställningen är 100.
GIT
En del av git[1]-sviten