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.51.1 → 2.53.0 no changes
- 2.51.0 no changes
- 2.50.1 no changes
-
2.50.0
2025-06-16
- 2.44.1 → 2.49.1 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.38.1 → 2.42.4 no changes
-
2.38.0
2022-10-02
- 2.35.1 → 2.37.7 no changes
-
2.35.0
2022-01-24
- 2.30.1 → 2.34.8 no changes
-
2.30.0
2020-12-27
- 2.27.1 → 2.29.3 no changes
-
2.27.0
2020-06-01
- 2.23.1 → 2.26.3 no changes
-
2.23.0
2019-08-16
SYNOPSIS
gitswitch[<options>] [--no-guess] <gren>gitswitch[<options>]--detach[<start-punkt>]gitswitch[<options>] (-c|-C) <ny-gren> [<start-punkt>]gitswitch[<options>]--orphan<ny-gren>
BESKRIVNING
Växla till en angiven gren. Arbetskatalogen och indexet uppdateras för att matcha grenen. Alla nya incheckningar läggs till i toppen av denna gren.
Valfritt kan en ny gren skapas med antingen -c, -C, automatiskt från en fjärrgren med samma namn (se --guess), eller koppla bort arbetskatalogen från vilken gren som helst med --detach, tillsammans med växling.
Att byta gren kräver inte ett rent index och arbetskatalog (dvs. inga skillnader jämfört med HEAD). Operationen avbryts dock om operationen leder till förlust av lokala ändringar, om inte annat anges med --discard-changes eller --merge.
ALTERNATIV
- <gren>
-
Gren att byta till.
- <ny-gren>
-
Namn på den nya grenen.
- <start-punkt>
-
Startpunkten för den nya grenen. Genom att ange en <start-punkt> kan du skapa en gren baserad på någon annan punkt i historiken än där
HEADför närvarande pekar. (Eller, i fallet med--detach, kan du inspektera och koppla bort från någon annan punkt.)Du kan använda syntaxen
@{-<N>}för att referera till den <N>:e sista grenen/incheckningen som byttes till medgitswitchellergitcheckoutoperationen. Du kan också ange-vilket är synonymt med@{-1}. Detta används ofta för att snabbt växla mellan två grenar, eller för att ångra ett grenbyte av misstag.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. -
-c<ny-gren> -
--create<ny-gren> -
Skapa en ny gren med namnet <ny-gren> med början vid <start-punkt> innan du byter till grenen. Detta är den transaktionella motsvarigheten till
$ git branch <ny-gren> $ git switch <ny-gren>
det vill säga, grenen återställs/skapas inte om inte
gitswitchlyckas (t.ex. när grenen används i ett annat arbetsträd, förblir inte bara den aktuella grenen densamma, utan grenen återställs inte heller till startpunkten). -
-C<ny-gren> -
--force-create<ny-gren> -
Liknar
--createförutom att om <ny-gren> redan finns, kommer den att återställas till <start-punkt>. Detta är en bekväm genväg för:$ git branch -f _<ny-gren>_ $ git switch _<ny-gren>_
-
-d -
--detach -
Växla till en incheckning för inspektion och kasserbara experiment. Se avsnittet "FRÅNKOPPLAT HEAD" i git-checkout[1] för mer information.
-
--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 switch -c <gren> --track <fjärr>/<gren>
Om grenen finns i flera fjärrer och en av dem namnges av konfigurationsvariabeln
checkout.defaultRemote, kommer vi att använda den för att göra det tydligare, även om <gren> inte är unik för alla fjärrer. Ställ in 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ärren origin. 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. -
-f -
--force -
Ett alias för
--discard-changes. -
--discard-changes -
Fortsätt även om indexet eller arbetskatalogen skiljer sig från
HEAD. Både indexet och arbetskatalogen återställs för att matcha växlingsmålet. Om--recurse-submodulesanges återställs även undermoduls-innehållet för att matcha växlingsmålet. Detta används för att ignorera lokala ändringar. -
-m -
--merge -
Om du har lokala ändringar i en eller flera filer som skiljer sig mellan den aktuella grenen och den gren du växlar till, vägrar kommandot att växla grenar för att bevara dina ändringar i kontext. Med det här alternativet sker dock en trevägssammanslagning mellan den aktuella grenen, innehållet i ditt arbetskatalog och den nya grenen, och du kommer att vara på 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). -
--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. -
-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. -
-t -
--track[ (direct|inherit)] -
När du skapar en ny gren, konfigurera "uppströms".
-cär underförstått. Se--tracki git-branch[1] för mer information.Om inget
-c-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 referensspecifikation:en som är konfigurerad för motsvarande fjärr, och sedan strippa 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-ci ett sådant fall. -
--no-track -
Skapa inte en "uppströms"-konfiguration, även om konfigurationsvariabeln
branch.autoSetupMergeär sann. -
--orphan<ny-gren> -
Skapa en ny ofödd gren med namnet <ny-gren>. Alla spårade filer tas bort.
-
--ignore-other-worktrees -
gitswitchvägrar när den önskade referensen redan är utcheckad av ett annat arbetsträd. Den här inställningen gör att referensen ändå checkas ut. Med andra ord kan referensen hållas av mer än ett arbetsträd. -
--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 ingenting (eller--no-recurse-submodules) används, kommer inte undermodulernas arbetskatalogerer att uppdateras. Precis som i git-submodule[1] kommer detta att koppla bortHEADfrån undermodulerna.
EXEMPEL
Följande kommando växlar till grenen "master":
$ git switch master
Efter att ha arbetat i fel gren, skulle byte till rätt gren göras med hjälp av:
$ git switch mittämne
Dock, din "felaktiga" gren och korrekta "mittämnes"-gren kan dock skilja sig åt i filer som du har ändrat lokalt, i vilket fall ovanstående växel skulle misslyckas så här:
$ git switch mytopic 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 switch -m mittämne Slår ihop frotz automatiskt
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.
För att växla tillbaka till föregående gren innan vi bytte till mittämne (dvs. "master"-grenen):
$ git switch -
Du kan skapa en ny gren från vilken incheckning som helst. Till exempel, byt till "HEAD~3" och skapa grenen "fixup":
$ git switch -c fixup HEAD~3 Växlade till en ny gren "fixup"
Om du vill starta en ny gren från en fjärrgren med samma namn:
$ git switch new-topic Branch `new-topic` set up to track remote branch `new-topic` from `origin` Switched to a new branch `new-topic`
För att checka ut incheckning HEAD~3 för tillfällig inspektion eller experiment utan att skapa en ny gren:
$ git switch --detach HEAD~3 HEAD is now at 9fc9555312 Merge branch 'cc/shared-index-permbits'
Om det visar sig att det du har gjort är värt att behålla, kan du alltid skapa ett nytt namn för det (utan att byta namn):
$ git switch -c bra-överraskningar
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 arbetskatalogen. Standardvärdet är ett, dvs. 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. Denna inställning 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 förvar som finns på SSD-diskar eller över NFS. För förvar 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 förvaret 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