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
2025-08-18
- 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.1 → 2.43.7 no changes
-
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.37.1 → 2.37.7 no changes
-
2.37.0
2022-06-27
- 2.36.1 → 2.36.6 no changes
-
2.36.0
2022-04-18
- 2.35.1 → 2.35.8 no changes
-
2.35.0
2022-01-24
- 2.34.1 → 2.34.8 no changes
-
2.34.0
2021-11-15
- 2.33.2 → 2.33.8 no changes
-
2.33.1
2021-10-12
- 2.31.1 → 2.33.0 no changes
-
2.31.0
2021-03-15
- 2.30.1 → 2.30.9 no changes
-
2.30.0
2020-12-27
- 2.29.1 → 2.29.3 no changes
-
2.29.0
2020-10-19
- 2.28.1 no changes
-
2.28.0
2020-07-27
- 2.23.1 → 2.27.1 no changes
-
2.23.0
2019-08-16
- 2.22.2 → 2.22.5 no changes
-
2.22.1
2019-08-11
-
2.22.0
2019-06-07
- 2.21.1 → 2.21.4 no changes
-
2.21.0
2019-02-24
- 2.20.1 → 2.20.5 no changes
-
2.20.0
2018-12-09
- 2.19.1 → 2.19.6 no changes
-
2.19.0
2018-09-10
- 2.18.1 → 2.18.5 no changes
-
2.18.0
2018-06-21
- 2.17.0 → 2.17.6 no changes
-
2.16.6
2019-12-06
-
2.15.4
2019-12-06
-
2.14.6
2019-12-06
-
2.13.7
2018-05-22
-
2.12.5
2017-09-22
- 2.10.5 → 2.11.4 no changes
-
2.9.5
2017-07-30
- 2.8.6 no changes
-
2.7.6
2017-07-30
-
2.6.7
2017-05-05
- 2.5.6 no changes
-
2.4.12
2017-05-05
- 2.1.4 → 2.3.10 no changes
-
2.0.5
2014-12-17
SYNOPSIS
gitbranch[--color[=<när>] |--no-color] [--show-current] [-v[--abbrev=<n> |--no-abbrev]] [--column[=<flaggor>] |--no-column] [--sort=<nyckel>] [--merged[<incheckning>]] [--no-merged[<incheckning>]] [--contains[<incheckning>]] [--no-contains[<incheckning>]] [--points-at<objekt>] [--format=<format>] [(-r|--remotes) | (-a|--all)] [--list] [<mönster>…]gitbranch[--track[=(direct|inherit)] |--no-track] [-f] [--recurse-submodules] <branch-name> [<start-punkt>]gitbranch(--set-upstream-to=<uppströms>|-u<uppströms>) [<gren-namn>]gitbranch--unset-upstream[<gren-namn>]gitbranch(-m|-M) [<old-branch>] <ny-gren>gitbranch(-c|-C) [<old-branch>] <ny-gren>gitbranch(-d|-D) [-r] <gren-namn>…gitbranch--edit-description[<gren-namn>]
BESKRIVNING
Om --list anges, eller om det inte finns några argument som inte är alternativ, listas befintliga grenar; den aktuella grenen markeras i grönt och med en asterisk. Alla grenar som är utcheckade i länkade arbetsträd markeras i cyan och markeras med ett plustecken. Alternativet -r gör att grenarna för fjärrspårning listas, och alternativet -a visar både lokala och fjärrgrenar.
Om ett <mönster> anges används det som ett jokertecken i skalet för att begränsa utdata till matchande grenar. Om flera mönster anges visas en gren om den matchar något av mönstren.
Observera att när du anger ett <mönster> måste du använda --list; annars kan kommandot tolkas som att en gren skapas.
Med --contains visas endast de grenar som innehåller den namngivna incheckningen (med andra ord, de grenar vars toppincheckning är ättlingar till den namngivna incheckningen), --no-contains inverterar den. Med --merged listas endast grenar som har sammanfogats med den namngivna incheckningen (d.v.s. de grenar vars toppincheckningar är nåbara från den namngivna incheckningen). Med --no-merged listas endast grenar som inte har sammanfogats med den namngivna incheckningen. Om argumentet <incheckning> saknas används som standard HEAD (d.v.s. spetsen på den aktuella grenen).
Kommandots andra form skapar en ny grenhuvud med namnet <gren-namn> som pekar på den aktuella HEAD, eller <start-punkt> om angivet. Som ett specialfall, för <start-punkt>, 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 är HEAD.
Observera att detta kommer att skapa den nya grenen, men det kommer inte att växla arbetsträdet till den; använd git switch <ny-gren> för att växla till den nya grenen.
När en lokal gren startas från en fjärrspårad gren konfigurerar Git grenen (specifikt konfigurationsposterna branch.<namn>.remote och branch.<namn>.merge) så att git pull korrekt sammanfogar från den fjärrspårade grenen. Detta beteende kan ändras via den globala konfigurationsflaggan branch.autoSetupMerge. Den inställningen kan åsidosättas genom att använda alternativen --track och --no-track, och ändras senare med git branch --set-upstream-to.
Med alternativet -m eller -M kommer <gammal-gren> att byta namn till <ny-gren>. Om <gammal-gren> hade en motsvarande reflog, byts namn på den för att matcha <ny-gren>, och en reflog-post skapas för att komma ihåg namnbytet på grenen. Om <ny-gren> finns måste -M användas för att tvinga fram namnbytet.
Alternativen -c och -C har exakt samma semantik som -m och -M, förutom att grenen inte byter namn utan kopieras till ett nytt namn, tillsammans med dess konfiguration och reflogg.
Med alternativet -d eller -D kommer <gren-namn> att raderas. Du kan ange mer än en gren för borttagning. Om grenen för närvarande har en reflogg kommer även refloggen att raderas.
Använd -r tillsammans med -d för att ta bort fjärrspårade grenar. Observera att det bara är vettigt att ta bort fjärrspårade grenar om de inte längre finns i fjärrkodförrådet eller om git fetch konfigurerats att inte uppdatera dem igen. Se även underkommandot prune i git-remote[1] för ett sätt att rensa upp alla föråldrade fjärrspårade grenar.
ALTERNATIV
-
-d -
--delete -
Ta bort en gren. Grenen måste vara helt sammanfogad i sin uppströmsgren, eller i
HEADom ingen uppströmsgren har angetts med--trackeller--set-upstream-to. -
-D -
Genväg för
--delete--force. -
--create-reflog -
Skapa grenens reflog. Detta aktiverar registrering av alla ändringar i grenreferensen, vilket möjliggör datumbaserade sha1-uttryck som <branch-name>
@{yesterday}. Observera att i icke-bara kodförråd är refloggar normalt aktiverade som standard av konfigurationsalternativetcore.logAllRefUpdates. Den negerade formen--no-create-reflogåsidosätter bara en tidigare--create-reflog, men negerar för närvarande inte inställningencore.logAllRefUpdates. -
-f -
--force -
Återställ <gren-namn> till <start-punkt>, även om <gren-namn> redan finns. Utan
-fvägrargitbranchatt ändra en befintlig gren. I kombination med-d(eller--delete) tillåts borttagning av grenen oavsett dess sammanslagna status, eller om den ens pekar på en giltig incheckning. I kombination med-m(eller--move) tillåts namnbyte av grenen även om det nya grennamnet redan finns, detsamma gäller för-c(eller--copy).Observera att
gitbranch-f<branch-name> [<start-point>], även med-f, vägrar att ändra en befintlig gren <branch-name> som är utcheckad i ett annat arbetsträd länkat till samma kodförråd. -
-m -
--move -
Flytta/byt namn på en gren, tillsammans med dess konfiguration och reflog.
-
-M -
Genväg för
--move--force. -
-c -
--copy -
Kopiera en gren, tillsammans med dess konfiguration och reflogg.
-
-C -
Genväg för
--copy--force. -
--color[=<när>] -
Färglägg grenar för att markera aktuella, lokala och fjärrspårande grenar. Värdet måste vara
always(standard),neverellerauto. -
--no-color -
Stäng av grenfärger, även när konfigurationsfilen anger standardfärg som utdata. Samma som
--color=never. -
-i -
--ignore-case -
Sorterings- och filtreringsgrenar är skiftlägesokänsliga.
-
--omit-empty -
Skriv inte ut en nyrad efter formaterade referenser där formatet expanderar till den tomma strängen.
-
--column[=<alternativ>] -
--no-column -
Visa grenlista i kolumner. Se konfigurationsvariabeln
column.branchför alternativsyntax.--columnoch--no-columnutan alternativ motsvararalwaysrespektivenever.Det här alternativet är endast tillämpligt i icke-utförligt läge.
-
--sort=<nyckel> -
Sortera baserat på <nyckel>. Prefixet
-för att sortera i fallande ordning efter värdet. Du kan använda alternativet--sort=<nyckel> flera gånger, i vilket fall den sista nyckeln blir primärnyckeln. Nycklarna som stöds är desamma som i git-for-each-ref[1]. Sorteringsordningen är som standard det värde som är konfigurerat för variabelnbranch.sortom den finns, eller sortering baserat på hela refnamnet (inklusive prefixetrefs/...). Detta listar först frånkopplatHEAD(om det finns) sedan lokala grenar och slutligen fjärrspårade grenar. Se git-config[1]. -
-r -
--remotes -
Lista eller ta bort (om det används med
-d) grenarna för fjärrspårning. Kombinera med--listför att matcha det/de valfria mönstret/mönstren. -
-a -
--all -
Lista både fjärrspårade grenar och lokala grenar. Kombinera med
--listför att matcha valfria mönster. -
-l -
--list -
Lista grenar. Med valfritt <mönster>..., t.ex.
gitbranch--listmaint-*', listas endast de grenar som matchar mönstret/mönstren. -
--show-current -
Skriv ut namnet på den aktuella grenen. I frånkopplat
HEAD-tillstånd skrivs ingenting ut. -
-v -
-vv -
--verbose -
I listläge visas sha1 och incheckningsämnesraden för varje head, tillsammans med relationen till uppströmsgrenen (om någon). Om det anges två gånger skrivs även sökvägen till det länkade arbetsträdet (om något) och namnet på uppströmsgrenen ut (se även
gitremoteshow<fjärr>). Observera att det aktuella arbetsträdetsHEADinte får sin sökväg utskriven (det är alltid din aktuella katalog). -
-q -
--quiet -
Var tystare när du skapar eller tar bort en gren, och undertryck icke-felmeddelanden.
-
--abbrev=<n> -
I den utförliga listan som visar incheckningsobjektets namn, visa det kortaste prefixet som är minst <n> hexdigits långt och som unikt refererar till objektet. Standardvärdet är 7 och kan åsidosättas av konfigurationsalternativet
core.abbrev. -
--no-abbrev -
Visa de fullständiga SHA-1-värdena i utdatalistan i stället för att förkorta dem.
-
-t -
--track[=(direct|inherit)] -
När du skapar en ny gren, konfigurera konfigurationsposterna
branch.<namn>.remoteochbranch.<namn>.mergeför att ställa in spårningskonfigurationen "uppströms" för den nya grenen. Denna konfiguration kommer att instruera git att visa förhållandet mellan de två grenarna igitstatusochgitbranch-v. Dessutom dirigerar dengitpullutan argument att hämta från uppströms när den nya grenen är utcheckad.Den exakta uppströmsgrenen väljs beroende på det valfria argumentet:
-t,--trackeller--track=directbetyder att själva startpunktsgrenen används som uppströmsgren;--track=inheritbetyder att kopiera uppströmskonfigurationen för startpunktsgrenen.Konfigurationsvariabeln
branch.autoSetupMergeanger hurgitswitch,gitcheckoutochgitbranchska bete sig när varken--trackeller--no-trackär angivna:Standardalternativet,
true, beter sig som om--track=directanges när startpunkten är en fjärrspårad gren.falsebeter sig som om--no-trackanges.alwaysbeter sig som om--track=directanges.inheritbeter sig som om--track=inheritanges.simplebeter sig som om--track=directanges endast när <start-punkt> är en fjärrspårad gren och den nya grenen har samma namn som fjärrgrenen.Se git-pull[1] och git-config[1] för ytterligare diskussion om hur alternativen
branch.<namn>.remoteochbranch.<namn>.mergeanvänds. -
--no-track -
Konfigurera inte "uppströms"-konfigurationen, även om konfigurationsvariabeln
branch.autoSetupMergeär inställd. -
--recurse-submodules -
DETTA ALTERNATIV ÄR EXPERIMENTELLT! Gör att det aktuella kommandot rekursivt går in i undermoduler om
submodule.propagateBranchesär aktiverat. Sesubmodule.propagateBranchesi git-config[1]. För närvarande stöds endast skapande av grenar.När den används vid skapandet av en gren skapas en ny gren <gren-namn> i superprojektet och alla undermoduler i superprojektets <start-punkt>. I undermoduler pekar grenen på undermodulens incheckning i superprojektets <start-punkt>, men grenens spårningsinformation konfigureras baserat på undermodulens grenar och fjärrar, t.ex.
gitbranch--recurse-submodulestopicorigin/mainskapar undermodulens gren "topic" som pekar på undermodulens incheckning i superprojektets "origin/main", men spårar undermodulens "origin/main". -
--set-upstream -
Eftersom det här alternativet hade förvirrande syntax stöds det inte längre. Använd
--trackeller--set-upstream-toi stället. -
-u<uppströms> -
--set-upstream-to=<uppströms> -
Ställ in spårningsinformationen för <gren-namn> så att <uppströms> betraktas som <gren-namn>_s uppströmsgren. Om ingen _<gren-namn> anges används som standard den aktuella grenen.
-
--unset-upstream -
Ta bort uppströmsinformationen för <gren-namn>. Om ingen gren anges används som standard den aktuella grenen.
-
--edit-description -
Öppna en redigerare och redigera texten för att förklara vad grenen är till för, så att den kan användas av olika andra kommandon (t.ex.
format-patch,request-pullochmerge(om aktiverat)). Fleradiga förklaringar kan användas. -
--contains[<incheckning>] -
Lista endast grenar som innehåller <incheckning> (
HEADom inget anges). Implicerar--list. -
--no-contains[<incheckning>] -
Lista endast grenar som inte innehåller <incheckning> (
HEADom inget anges). Implicerar--list. -
--merged[<incheckning>] -
Lista endast grenar vars tips kan nås från <incheckning> (
HEADom inget anges). Implicerar--list. -
--no-merged[<incheckning>] -
Lista endast grenar vars tips inte kan nås från <incheckning> (
HEADom inget anges). Implicerar--list. -
--points-at<objekt> -
Lista endast grenar av <objekt>.
-
--format<format> -
En sträng som interpolerar %(fältnamn) från en grenreferens som visas och objektet den pekar på. <format> är samma sak som för git-for-each-ref[1].
- <gren-namn>
-
Namnet på den gren som ska skapas eller tas bort. Det nya grennamnet måste klara alla kontroller som definieras av git-check-ref-format[1]. Vissa av dessa kontroller kan begränsa antalet tecken som är tillåtna i ett grennamn.
- <start-punkt>
-
Det nya grenhuvudet kommer att peka på denna incheckning. Det kan anges som ett grennamn, ett inchecknings-ID eller en tagg. Om detta alternativ utelämnas kommer det nuvarande
HEADatt användas i stället. - <gammal-gren>
-
Namnet på en befintlig gren. Om det här alternativet utelämnas kommer namnet på den aktuella grenen att användas i stället.
- <ny-gren>
-
Det nya namnet för en befintlig gren. Samma begränsningar som för <gren-namn> gäller.
KONFIGURATION
pager.branch respekteras endast vid listning av grenar, d.v.s. när --list används eller antyds. Standardinställningen är att använda en bläddrare. Se git-config[1].
Allt ovanför den här raden i det här avsnittet finns inte med i dokumentationen för git-config[1]. Innehållet som följer är detsamma som det som finns där:
-
branch.autoSetupMerge -
Anger för
gitbranch,gitswitchochgitcheckoutatt ställa in nya grenar så att git-pull[1] sammanslås korrekt från startpunktsgrenen. Observera att även om detta alternativ inte är angivet kan detta beteende väljas per gren med hjälp av alternativen--trackoch--no-track. Standardinställningen för detta alternativ ärtrue. De giltiga inställningarna är:-
false -
ingen automatisk inställning görs
-
true -
automatisk inställning görs när startpunkten är en fjärrspårningsgren
-
always -
automatisk inställning görs när startpunkten är antingen en lokal gren eller en fjärrspårningsgren
-
inherit -
Om startpunkten har en spårningskonfiguration, kopieras den till den nya grenen
-
simple -
automatisk inställning görs endast när startpunkten är en fjärrspårningsgren och den nya grenen har samma namn som fjärrgrenen.
-
-
branch.autoSetupRebase -
När en ny gern skapas med
gitbranch,gitswitchellergitcheckoutsom spårar en annan gren, talar denna variabel om för Git att ställa in pull för att obasera istället för sammanslå (sebranch.<name>.rebase). De giltiga inställningarna är:Se
branch.autoSetupMergeför information om hur man konfigurerar en gren för att spåra en annan gren. Standardinställningen ärnever. -
branch.sort -
Denna variabel styr sorteringsordningen för grenar när de visas av git-branch[1]. Utan alternativet
--sort=<värde> kommer värdet för denna variabel att användas som standard. Se fältnamnen i git-for-each-ref[1] för giltiga värden. -
branch.<name>.remote -
När den är på grenen <namn>, talar den om för
gitfetchochgitpushvilken fjärr som ska hämtas från eller pushas till. Fjärren som pushas till kan åsidosättas medremote.pushDefault(för alla grenar). Fjärren som pushas till, för den aktuella grenen, kan ytterligare åsidosättas avbranch.<namn>.pushRemote. Om ingen fjärr är konfigurerad, eller om du inte är på någon gren och det finns mer än en fjärr definierad i förvaret, används som standardoriginför hämtning ochremote.pushDefaultför push:ing. Dessutom är.(en punkt) det aktuella lokala förvaret (ett punkt-förvar), se `branch.<namn>.merge`s sista anmärkning nedan. -
branch.<name>.pushRemote -
När den är på branch <name>, åsidosätter den
branch.<name>.remoteför push:ning. Den åsidosätter ocksåremote.pushDefaultför push:ning från gren <name>. När du hämtar från en plats (t.ex. din uppströms) och pushar till en annan plats (t.ex. ditt eget publiceringsfövar), vill du ställa inremote.pushDefaultför att ange fjärren som push-funktionen ska skickas till för alla grenar, och använda det här alternativet för att åsidosätta det för en specifik gren. -
branch.<name>.merge -
Definierar, tillsammans med
branch.<namn>.remote, uppströmsgrenen för den givna grenen. Den anger förgitfetch/gitpull/gitrebasevilken gren som ska sammanslås och kan också påverkagitpush(sepush.default). I grenen <namn> anger den förgitfetchvilken standardrefspec som ska markeras för sammanfogning iFETCH_HEAD. Värdet hanteras som den fjärr-delen av en refspec och måste matcha en ref som hämtas från fjärren som anges avbranch.<namn>.remote. Sammanslagnings-informationen används avgitpull(som först anropargitfetch) för att söka efter standardgrenen för sammanfogning. Utan detta alternativ sammanslårgitpullsom standard den första hämtade refspecen. Ange flera värden för att få en bläckfisk-sammanfogning. Om du vill konfigureragitpullså att den sammanfogas med <namn> från en annan gren i det lokala arkivet, kan du pekabranch.<namn>.mergetill önskad gren och använda den relativa sökvägsinställningen.(en punkt) förbranch.<namn>.remote. -
branch.<namn>.mergeOptions -
Ställer in standardalternativ för sammanslagning till grenen <namn>. Syntaxen och de alternativ som stöds är desamma som för git-merge[1], men alternativvärden som innehåller blanksteg stöds för närvarande inte.
-
branch.<name>.rebase -
När det är sant, ombasera grenen <namn> ovanpå den hämtade grenen, istället för att sammanfoga standardgrenen från standardfjärren när
gitpullkörs. Sepull.rebaseför att göra detta på ett icke-grenspecifikt sätt.När
merges(eller baram) används, skicka--rebase-merges-alternativet tillgitrebaseså att de lokala sammanslagnings-incheckningen inkluderas i ombaseringen (se git-rebase[1] för detaljer).När värdet är
interactive(eller barai) körs ombaseringen i interaktivt läge.OBS: detta är en potentiellt farlig operation; använd den inte om du inte förstår konsekvenserna (se git-rebase[1] för mer information).
-
branch.<name>.description -
Grenbeskrivning, kan redigeras med
gitbranch--edit-description. Grenbeskrivningen läggs automatiskt till iformat-patchföljebrevet ellerrequest-pullsammanfattningen.
EXEMPEL
- Starta utveckling från en känd tagg
-
$ git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6 $ cd my2.6 $ git branch my2.6.14 v2.6.14 (1) $ git switch my2.6.14
-
Det här steg och nästa kan kombineras till ett enda steg med "checkout -b my2.6.14 v2.6.14".
-
- Ta bort en onödig gren
-
$ git clone git://git.kernel.org/.../git.git my.git $ cd my.git $ git branch -d -r origin/todo origin/html origin/man (1) $ git branch -D test (2)
-
Ta bort grenarna för fjärrspårning "todo", "html" och "man". Nästa
gitfetchellergitpullkommer att skapa dem igen om du inte konfigurerar dem att inte göra det. Se git-fetch[1]. -
Ta bort grenen "test" även om grenen "master" (eller vilken gren som för närvarande är utcheckad) inte har alla incheckningar från testgrenen.
-
- Lista grenar från en specifik fjärr
-
$ git branch -r -l '<fjärr>/<mönster>' (1) $ git for-each-ref 'refs/remotes/<fjärr>/<mönster>' (2)
-
Att använda
-askulle sammanblanda <fjärr> med alla lokala grenar som du råkar ha fått prefixet med samma <fjärr>-mönster. -
for-each-refkan ha en mängd olika alternativ. Se git-for-each-ref[1]
-
Mönster kräver normalt citering.
NOTERINGAR
Om du skapar en gren som du vill byta till omedelbart är det enklare att använda kommandot git switch med dess -c-flagga för att göra samma sak med ett enda kommando.
Alternativen --contains, --no-contains, --merged och --no-merged tjänar fyra relaterade men olika syften:
-
--contains<incheckning> används för att hitta alla grenar som behöver särskild uppmärksamhet om <incheckning> skulle ombaseras eller ändras, eftersom dessa grenar innehåller den angivna <incheckning>. -
--no-contains<incheckning> är motsatsen till det, d.v.s. grenar som inte innehåller den angivna <incheckning>. -
--mergedanvänds för att hitta alla grenar som säkert kan tas bort, eftersom dessa grenar helt ingår iHEAD. -
--no-mergedanvänds för att hitta grenar som är kandidater för sammanslagning medHEAD, eftersom dessa grenar inte helt och hållet ingår iHEAD.
När man kombinerar flera --contains- och --no-contains-filter visas endast referenser som innehåller minst en av --contains-commits och inte innehåller någon av --no-contains-incheckningar.
När man kombinerar flera --merged- och --no-merged-filter visas endast referenser som är nåbara från minst en av --merged-commits och från ingen av --no-merged-incheckningar.
SE ÄVEN
git-check-ref-format[1], git-fetch[1], git-remote[1], "Att förstå historia: Vad är en gren?" i Git användarmanualen.
GIT
En del av git[1]-sviten