Svenska ▾ Topics ▾ Latest version ▾ git-branch last updated in 2.51.0

NAMN

git-branch - Lista, skapa eller ta bort grenar

SYNOPSIS

git branch [--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>…​]
git branch [--track[=(direct|inherit)] | --no-track] [-f]
	   [--recurse-submodules] <branch-name> [<start-punkt>]
git branch (--set-upstream-to=<uppströms>|-u <uppströms>) [<gren-namn>]
git branch --unset-upstream [<gren-namn>]
git branch (-m|-M) [<old-branch>] <ny-gren>
git branch (-c|-C) [<old-branch>] <ny-gren>
git branch (-d|-D) [-r] <gren-namn>…​
git branch --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 HEAD om ingen uppströmsgren har angetts med --track eller --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 konfigurationsalternativet core.logAllRefUpdates. Den negerade formen --no-create-reflog åsidosätter bara en tidigare --create-reflog, men negerar för närvarande inte inställningen core.logAllRefUpdates.

-f
--force

Återställ <gren-namn> till <start-punkt>, även om <gren-namn> redan finns. Utan -f vägrar git branch att ä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 git branch -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), never eller auto.

--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.branch för alternativsyntax. --column och --no-column utan alternativ motsvarar always respektive never.

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 variabeln branch.sort om den finns, eller sortering baserat på hela refnamnet (inklusive prefixet refs/...). Detta listar först frånkopplat HEAD (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 --list för att matcha det/de valfria mönstret/mönstren.

-a
--all

Lista både fjärrspårade grenar och lokala grenar. Kombinera med --list för att matcha valfria mönster.

-l
--list

Lista grenar. Med valfritt <mönster>..., t.ex. git branch --list maint-*', 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 git remote show <fjärr>). Observera att det aktuella arbetsträdets HEAD inte 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>.remote och branch.<namn>.merge fö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 i git status och git branch -v. Dessutom dirigerar den git pull utan 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, --track eller --track=direct betyder att själva startpunktsgrenen används som uppströmsgren; --track=inherit betyder att kopiera uppströmskonfigurationen för startpunktsgrenen.

Konfigurationsvariabeln branch.autoSetupMerge anger hur git switch, git checkout och git branch ska bete sig när varken --track eller --no-track är angivna:

Standardalternativet, true, beter sig som om --track=direct anges när startpunkten är en fjärrspårad gren. false beter sig som om --no-track anges. always beter sig som om --track=direct anges. inherit beter sig som om --track=inherit anges. simple beter sig som om --track=direct anges 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>.remote och branch.<namn>.merge anvä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. Se submodule.propagateBranches i 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. git branch --recurse-submodules topic origin/main skapar 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 --track eller --set-upstream-to i 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-pull och merge (om aktiverat)). Fleradiga förklaringar kan användas.

--contains [<incheckning>]

Lista endast grenar som innehåller <incheckning> (HEAD om inget anges). Implicerar --list.

--no-contains [<incheckning>]

Lista endast grenar som inte innehåller <incheckning> (HEAD om inget anges). Implicerar --list.

--merged [<incheckning>]

Lista endast grenar vars tips kan nås från <incheckning> (HEAD om inget anges). Implicerar --list.

--no-merged [<incheckning>]

Lista endast grenar vars tips inte kan nås från <incheckning> (HEAD om 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 HEAD att 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 git branch, git switch och git checkout att 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 --track och --no-track. Standardinställningen för detta alternativ är true. 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 git branch, git switch eller git checkout som 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å (se branch.<name>.rebase). De giltiga inställningarna är:

never

ombasera sätts aldrig automatiskt till true.

local

rebase is set to true for tracked branches of other local branches.

remote

rebase är satt till sant för spårade grenar av fjärrspårande grenar.

always

ombasera kommer att sättas till true för alla spårningsgrenar.

Se branch.autoSetupMerge för information om hur man konfigurerar en gren för att spåra en annan gren. Standardinställningen är never.

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 git fetch och git push vilken fjärr som ska hämtas från eller pushas till. Fjärren som pushas till kan åsidosättas med remote.pushDefault (för alla grenar). Fjärren som pushas till, för den aktuella grenen, kan ytterligare åsidosättas av branch.<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 standard origin för hämtning och remote.pushDefault fö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>.remote för push:ning. Den åsidosätter också remote.pushDefault fö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 in remote.pushDefault fö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ör git fetch/git pull/git rebase vilken gren som ska sammanslås och kan också påverka git push (se push.default). I grenen <namn> anger den för git fetch vilken standardrefspec som ska markeras för sammanfogning i FETCH_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 av branch.<namn>.remote. Sammanslagnings-informationen används av git pull (som först anropar git fetch) för att söka efter standardgrenen för sammanfogning. Utan detta alternativ sammanslår git pull som standard den första hämtade refspecen. Ange flera värden för att få en bläckfisk-sammanfogning. Om du vill konfigurera git pull så att den sammanfogas med <namn> från en annan gren i det lokala arkivet, kan du peka branch.<namn>.merge till önskad gren och använda den relativa sökvägsinställningen . (en punkt) för branch.<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 git pull körs. Se pull.rebase för att göra detta på ett icke-grenspecifikt sätt.

När merges (eller bara m) används, skicka --rebase-merges-alternativet till git rebase så att de lokala sammanslagnings-incheckningen inkluderas i ombaseringen (se git-rebase[1] för detaljer).

När värdet är interactive (eller bara i) 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 git branch --edit-description. Grenbeskrivningen läggs automatiskt till i format-patch följebrevet eller request-pull sammanfattningen.

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
  1. 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)
  1. Ta bort grenarna för fjärrspårning "todo", "html" och "man". Nästa git fetch eller git pull kommer att skapa dem igen om du inte konfigurerar dem att inte göra det. Se git-fetch[1].

  2. 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)
  1. Att använda -a skulle sammanblanda <fjärr> med alla lokala grenar som du råkar ha fått prefixet med samma <fjärr>-mönster.

  2. for-each-ref kan 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>.

  • --merged används för att hitta alla grenar som säkert kan tas bort, eftersom dessa grenar helt ingår i HEAD.

  • --no-merged används för att hitta grenar som är kandidater för sammanslagning med HEAD, eftersom dessa grenar inte helt och hållet ingår i HEAD.

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.

GIT

En del av git[1]-sviten