Svenska ▾ Topics ▾ Latest version ▾ git-submodule last updated in 2.52.0

NAMN

git-submodule - Initiera, uppdatera eller inspektera undermoduler

SYNOPSIS

git submodule [--quiet] [--cached]
git submodule [--quiet] add [<flaggor>] [--] <kodförråd> [<sökväg>]
git submodule [--quiet] status [--cached] [--recursive] [--] [<sökväg>…​]
git submodule [--quiet] init [--] [<sökväg>…​]
git submodule [--quiet] deinit [-f|--force] (--all|[--] <sökväg>…​)
git submodule [--quiet] update [<flaggor>] [--] [<sökväg>…​]
git submodule [--quiet] set-branch [<flaggor>] [--] <sökväg>
git submodule [--quiet] set-url [--] <sökväg> <nyurl>
git submodule [--quiet] summary [<flaggor>] [--] [<sökväg>…​]
git submodule [--quiet] foreach [--recursive] <kommando>
git submodule [--quiet] sync [--recursive] [--] [<sökväg>…​]
git submodule [--quiet] absorbgitdirs [--] [<sökväg>…​]

BESKRIVNING

Inspekterar, uppdaterar och hanterar undermoduler.

För mer information om undermoduler, se gitsubmodules[7].

KOMMANDON

Utan argument visas statusen för befintliga undermoduler. Flera underkommandon är tillgängliga för att utföra operationer på undermodulerna.

add [-b <gren>] [-f|--force] [--name <namn>] [--reference <kodförråd>] [--ref-format <format>] [--depth <djup>] [--] <kodförråd> [<sökväg>]

Lägg till det givna kodförrådet som en undermodul vid den givna sökvägen till ändringsmängden som ska checkas-in bredvid det aktuella projektet: det aktuella projektet kallas "superprojektet".

<kodförråd> är URL:en till den nya undermodulens ursprungs-kodförråd. Detta kan antingen vara en absolut URL, eller (om den börjar med ./ eller ../), platsen i förhållande till superprojektets standardfjärrrepository (Observera att för att ange ett kodförråd foo.git som ligger precis bredvid ett superprojekt bar.git måste du använda ../foo.git istället för ./foo.git - som man kan förvänta sig när man följer reglerna för relativa URL:er - eftersom utvärderingen av relativa URL:er i Git är identisk med den för relativa kataloger).

Standardfjärren är fjärr för fjärrspårningsgrenen i den aktuella grenen. Om ingen sådan fjärrspårningsgren finns eller om HEAD är frånkopplad antas "origin" vara standardfjärren. Om superprojektet inte har en konfigurerad standardfjärr är superprojektet sin egen auktoritativa uppströms och den aktuella arbetskatalogen används istället.

Det valfria argumentet <sökväg> är den relativa platsen för den klonade delmodulen att existera i superprojektet. Om <sökväg> inte anges används den kanoniska delen av käll-förvaret ("repo" för "/path/to/repo.git" och "foo" för "host.xz:foo/.git"). Om <path> finns och redan är ett giltigt Git-förvar, köas det för incheckning utan kloning. <sökväg> används också som delmodulens logiska namn i dess konfigurationsposter om inte --name används för att ange ett logiskt namn.

Den angivna URL:en registreras i .gitmodules för användning av efterföljande användare som klonar superprojektet. Om URL:en anges relativ till superprojektets kodförråd, antas det att superprojektets och undermodulens kodförråd kommer att hållas tillsammans på samma relativa plats, och endast superprojektets URL behöver anges. git-submodule kommer att korrekt lokalisera undermodulen med hjälp av den relativa URL:en i .gitmodules.

Om --ref-format <format> anges, kommer referenslagringsformatet för nyligen klonade undermoduler att ställas in därefter.

status [--cached] [--recursive] [--] [<sökväg>…​]

Visar statusen för undermodulerna. Detta skriv ut SHA-1 för den för närvarande utcheckade incheckning för varje undermodul, tillsammans med sökvägen till undermodulen och utdata från git describe för SHA-1. Varje SHA-1 kommer eventuellt att ha prefixet - om undermodulen inte är initierad, + om den för närvarande utcheckade undermoduls-incheckning inte matchar SHA-1 som finns i indexet för det innehållande kodförråd och U om undermodulen har sammanslagningskonflikter.

Om --cached anges kommer detta kommando istället att skriva ut SHA-1 som är registrerad i superprojektet för varje undermodul.

Om --recursive anges kommer detta kommando att rekursiva till kapslade undermoduler och även visa deras status.

Om du bara är intresserad av ändringar av de för närvarande initialiserade undermodulerna med avseende på incheckning som är registrerad i indexet eller HEAD, kommer git-status[1] och git-diff[1] också att tillhandahålla den informationen (och kan också rapportera ändringar i en undermoduls arbetsträd).

init [--] [<sökväg>…​]

Initiera de undermoduler som är registrerade i indexet (som lades till och checkas-in någon annanstans) genom att sätta submodule.$name.url i .git/config, med samma inställning från .gitmodules som mall. Om URL:en är relativ kommer den att lösas med hjälp av standardfjärren. Om det inte finns någon standardfjärr antas det aktuella arkivet vara uppströms.

Valfria <sökväg>-argument begränsar vilka undermoduler som ska initieras. Om ingen sökväg anges och submodule.active har konfigurerats, kommer undermoduler som konfigurerats att vara aktiva att initieras, annars initieras alla undermoduler.

It will also copy the value of submodule.$name.update, if present in the .gitmodules file, to .git/config, but (1) this command does not alter existing information in .git/config, and (2) submodule.$name.update that is set to a custom command is not copied for security reasons.

Du kan sedan anpassa URL:erna för klonen av undermodulerna i .git/config för din lokala installation och fortsätta till git submodule update; du kan också bara använda git submodule update --init utan det explicita steget init om du inte avser att anpassa några undermodulplatser.

Se underkommandot add för definitionen av standardfjärr.

deinit [-f|--force] (--all|[--] <sökväg>…​)

Avregistrera de givna undermodulerna, d.v.s. ta bort hela submodule.$name-sektionen från .git/config tillsammans med deras arbetsträd. Ytterligare anrop till git submodule update, git submodule foreach och git submodule sync kommer att hoppa över alla oregistrerade undermoduler tills de initialiseras igen, så använd det här kommandot om du inte längre vill ha en lokal utcheckning av undermodulen i ditt arbetsträd.

När kommandot körs utan sökvägsmönster, ger det fel, istället för att avinitiera allt, för att förhindra misstag.

Om --force anges kommer undermodulens arbetskatalog att tas bort även om det innehåller lokala modifieringar.

Om du verkligen vill ta bort en undermodul från kodförrådet och checka-in den, använd git-rm[1] istället. Se gitsubmodules[7] för borttagningsalternativ.

update [--init] [--remote] [-N|--no-fetch] [--[no-]recommend-shallow] [-f|--force] [--checkout|--rebase|--merge] [--reference <kodförråd>] [--ref-format <format>] [--depth <djup>] [--recursive] [--jobs <n>] [--[no-]single-branch] [--filter <filter-spec>] [--] [<sökväg>…​]

Uppdatera de registrerade undermodulerna så att de matchar vad superprojektet förväntar sig genom att klona saknade undermoduler, hämta saknade incheckningar i undermoduler och uppdatera arbetskatalog för undermodulerna. "Uppdateringen" kan göras på flera sätt beroende på kommandoradsalternativ och värdet på konfigurationsvariabeln submodule.<namn>.update. Kommandoradsalternativet har företräde framför konfigurationsvariabeln. Om ingetdera anges utförs en "utcheckning". (obs: vad som finns i .gitmodules-filen är irrelevant i detta läge; se git submodule init ovan för hur .gitmodules används). "Uppdaterings"-procedurerna som stöds både från kommandoraden och genom konfigurationen submodule.<namn>.update är:

checkout

incheckningen som registrerats i superprojektet kommer att checkas ut i undermodulen på en frånkopplat HEAD.

Om --force anges kommer undermodulen att checkas ut (med git checkout --force), även om incheckningeb som anges i indexet för det innehållande arkivet redan matchar incheckningen som checkats ut i undermodulen.

ombasering

Den nuvarande grenen av undermodulen kommer att ombaseras på den incheckning som registrerats i superprojektet.

merge

Incheckningen som registrerats i superprojektet kommer att slås samman med den aktuella grenen i undermodulen.

Följande uppdateringsprocedurer har ytterligare begränsningar:

anpassat kommando

mekanism för att köra godtyckliga kommandon med commit-ID som argument. Mer specifikt, om konfigurationsvariabeln submodule.<namn>.update är satt till !custom command, läggs objektnamnet för incheckning som registrerats i superprojektet för undermodulen till i custom command-strängen och körs. Observera att denna mekanism inte stöds i .gitmodules-filen eller på kommandoraden.

none

Undermodulen uppdateras inte. Denna uppdateringsprocedur är inte tillåten på kommandoraden.

Om undermodulen inte har initierats än, och du bara vill använda inställningen som den lagras i .gitmodules, kan du automatiskt initiera undermodulen med alternativet --init.

Om --recursive anges, kommer detta kommando att använda rekursivt inträde i de registrerade undermodulerna och uppdatera eventuella kapslade undermoduler inuti.

Om --ref-format <format> anges, kommer referenslagringsformatet för nyligen klonade undermoduler att ställas in därefter.

Om --filter <filter-spec> anges, kommer det givna partiella klon-filtret att tillämpas på undermodulen. Se git-rev-list[1] för detaljer om filterspecifikationer.

set-branch (-b|--branch) <gren> [--] <sökväg>
set-branch (-d|--default) [--] <<sökväg>

Ställer in standardgrenen för fjärrspårning för undermodulen. Alternativet --branch gör att fjärrgrenen kan specificeras. Alternativet --default tar bort konfigurationsnyckeln submodule.<namn>.branch, vilket gör att spårningsgrenen som standard anges till fjärrgrenen HEAD.

set-url [--] <sökväg> <nyurl>

Ställer in URL:en för den angivna undermodulen till <nyurl>. Sedan synkroniseras undermodulens nya fjärr-URL-konfiguration automatiskt.

summary [--cached|--files] [(-n|--summary-limit) <n>] [incheckning] [--] [<sökväg>…​]

Visa inchecknings-sammanfattning mellan den givna incheckningen (standard är HEAD) och arbetsträd/index. För en aktuell undermodul visas en serie incheckningar i undermodulen mellan den givna superprojekt-incheckningen och indexet eller arbetskatalog (växlat med --cached). Om alternativet --files anges, visas serien av incheckningar i undermodulen mellan superprojektets index och undermodulens arbetskatalog (det här alternativet tillåter inte användning av alternativet --cached eller att tillhandahålla en explicit incheckning).

Att använda alternativet --submodule=log med git-diff[1] kommer också att ge den informationen.

foreach [--recursive] <<kommando>

Utvärderar ett godtyckligt skalkommando i varje utcheckad undermodul. Kommandot har åtkomst till variablerna $name, $sm_path, $displaypath, $sha1 och $toplevel: $name är namnet på den relevanta undermodulsektionen i .gitmodules, $sm_path är sökvägen till undermodulen som registrerats i det omedelbara superprojektet, $displaypath innehåller den relativa sökvägen från den aktuella arbetskatalogen till undermodulernas rotkatalog, $sha1 är incheckning som registrerats i det omedelbara superprojektet, och $toplevel är den absoluta sökvägen till den översta nivån av det omedelbara superprojektet. Observera att för att undvika konflikter med $PATH i Windows är variabeln $path nu en föråldrad synonym till variabeln $sm_path. Alla undermoduler som definierats i superprojektet men inte utcheckats ignoreras av detta kommando. Om inte --quiet är angivet, skriver foreach ut namnet på varje undermodul innan kommandot utvärderas. Om --recursive anges, passeras undermoduler rekursivt (dvs. det givna shellkommandot utvärderas även i kapslade undermoduler). En retur som inte är noll från kommandot i någon undermodul gör att bearbetningen avslutas. Detta kan åsidosättas genom att lägga till || : i slutet av kommandot.

Som ett exempel, visar kommandot nedan sökvägen och den för närvarande utcheckade incheckning för varje undermodul:

git-submodul för varje 'echo $sm_path `git rev-parse HEAD`'
sync [--recursive] [--] [<sökväg>…​]

Synkroniserar undermodulers konfigurationsinställning för fjärr-URL till värdet som anges i .gitmodules. Det påverkar endast de undermoduler som redan har en URL-post i .git/config (det är fallet när de initieras eller nyligen läggs till). Detta är användbart när undermodulers URL:er ändras uppströms och du behöver uppdatera dina lokala arkiv i enlighet därmed.

git submodule sync synkroniserar alla undermoduler medan git submodule sync -- A endast synkroniserar undermodul "A".

Om --recursive anges, kommer detta kommando att använda rekursivt inträde i de registrerade undermodulerna och synkronisera eventuella kapslade undermoduler inuti.

absorbgitdirs

Om en git-katalog för en undermodul finns inuti undermodulen, flytta git-katalogen för undermodulen till dess superprojekts sökväg $GIT_DIR/modules och anslut sedan git-katalogen och dess arbetskatalog genom att ställa in core.worktree och lägga till en .git-fil som pekar på git-katalogen inbäddad i superprojects git-katalog.

Ett kodförråd som klonades oberoende och senare lades till som en undermodul eller gamla inställningar har git-katalogen för submodules inuti undermodulen istället för inbäddad i git-katalogen för superprojects.

Det här kommandot är rekursivt som standard.

ALTERNATIV

-q
--quiet

Skriv bara ut felmeddelanden.

--progress

Det här alternativet är endast giltigt för kommandona "add" och "update". Förloppsstatus rapporteras som standard i standardfelströmmen när den är kopplad till en terminal, såvida inte -q anges. Denna flagga tvingar fram förloppsstatus även om standardfelströmmen inte dirigeras till en terminal.

--all

Det här alternativet är endast giltigt för deinit-kommandot. Avregistrera alla undermoduler i arbetskatalog.

-b <gren>
--branch <gren>

Gren till kodförrådet som ska läggas till som undermodul. Namnet på grenen registreras som submodule.<namn>.branch i .gitmodules för update --remote. Ett specialvärde på . används för att indikera att namnet på grenen i undermodulen ska vara samma namn som den aktuella grenen i det aktuella kodförrådet. Om alternativet inte anges används standardvärdet HEAD som fjärrnamn.

-f
--force

Det här alternativet är endast giltigt för kommandona add, deinit och update. När du kör add, tillåts tillägg av en annars ignorerad sökväg för en undermodul. Det här alternativet används också för att kringgå en kontroll av att undermodulens namn inte redan används. Som standard kommer git submodule add att misslyckas om det föreslagna namnet (som härleds från sökvägen) redan är registrerat för en annan undermodul i kodförrådet. Genom att använda --force kan kommandot fortsätta genom att automatiskt generera ett unikt namn genom att lägga till ett nummer till det motstridiga namnet (t.ex. om en undermodul med namnet child finns, kommer den att försöka child1, och så vidare). När du kör deinit kommer undermodulens arbetskatalog att tas bort även om de innehåller lokala ändringar. När du kör update (endast effektivt med utcheckningsproceduren), kasta bort lokala ändringar i undermoduler när du byter till en annan incheckning; och kör alltid en utcheckningsoperation i undermodulen, även om commiten som listas i indexet för det innehållande arkivet matchar den incheckning som checkats ut i undermodulen.

--cached

Det här alternativet gäller endast för status- och sammanfattnings-kommandon. Dessa kommandon använder vanligtvis incheckning som finns i undermodulen HEAD, men med det här alternativet, används istället incheckning som lagras i indexet.

--files

Det här alternativet är endast giltigt för kommandot summary. Kommandot jämför incheckningen i indexet med den i undermodulen HEAD när det här alternativet används.

-n
--summary-limit

Det här alternativet gäller endast för kommandot summary. Begränsa storleken på sammanfattningen (antalet incheckninger som visas totalt). Om du anger 0 inaktiveras sammanfattningen; ett negativt tal betyder obegränsat (standard). Denna gräns gäller endast modifierade undermoduler. Storleken är alltid begränsad till 1 för tillagda/borttagna/typändrade undermoduler.

--remote

Det här alternativet är endast giltigt för kommandot update. Istället för att använda superprojektets registrerade SHA-1 för att uppdatera undermodulen, använd statusen för undermodulens fjärrspårningsgren. Fjärrgrenen som används är grenens fjärr (branch.<namn>.remote), med standardinställningen origin. Fjärrgrenen som används har som standard fjärren HEAD, men grennamnet kan åsidosättas genom att ställa in alternativet submodule.<namn>.branch i antingen .gitmodules eller .git/config (med .git/config prioriterat).

Detta fungerar för alla uppdateringsprocedurer som stöds (--checkout, --rebase, etc.). Den enda ändringen är källan till mål-SHA-1. Till exempel kommer submodule update --remote --merge att sammanslå uppströms ändringar av undermoduler med undermodulerna, medan submodule update --merge kommer att sammanslå superprojektet gitlink-ändringar in i undermodulerna.

För att säkerställa ett aktuellt spårningsgrentillstånd hämtar update --remote submodulens fjärrkodförråd innan SHA-1 beräknas. Om du inte vill hämta bör du använda submodule update --remote --no-fetch.

Använd det här alternativet för att integrera ändringar från det uppströms delprojektet med din undermoduls nuvarande HEAD. Alternativt kan du köra git pull från undermodulen, vilket är motsvarande förutom namnet på fjärrgrenen: update --remote använder standard-förvaret för uppströms och submodule.<namn>.branch, medan git pull använder delmodulens branch.<namn>.merge. Föredra submodule.<namn>.branch om du vill distribuera standard-förvaret för uppströms med superprojektet och branch.<namn>.merge om du vill ha en mer nativ känsla när du arbetar i själva undermodulen.

-N
--no-fetch

Det här alternativet är endast giltigt för kommandot update. Hämta inte nya objekt från fjärrplatsen.

--checkout

Det här alternativet är endast giltigt för kommandot update. Checka ut incheckningen som registrerats i superprojektet på en frånkopplat HEAD i submodulen. Detta är standardbeteendet, det huvudsakliga syftet med det här alternativet är att åsidosätta submodule.$name.update när det är satt till ett annat värde än checkout. Om nyckeln submodule.$name.update antingen inte är explicit angiven eller är satt till checkout, är det här alternativet implicit.

--merge

Det här alternativet är endast giltigt för kommandot update. Sammanfoga incheckningen som registrerats in i superprojektet till den aktuella grenen av undermodulen. Om det här alternativet anges kommer undermodulens HEAD inte att kopplas från. Om ett sammanslagningsfel förhindrar denna process måste du lösa de resulterande konflikterna inom undermodulen med vanliga konfliktlösningsverktyg. Om nyckeln submodule.$name.update är satt till merge är det här alternativet implicit.

--rebase

Det här alternativet är endast giltigt för kommandot update. Ombasera den aktuella grenen till incheckningen som registrerats i superprojektet. Om det här alternativet anges kommer undermodulens HEAD inte att bli frånkopplat. Om ett merge-fel förhindrar denna process måste du lösa dessa fel med git-rebase[1]. Om nyckeln submodule.$name.update är satt till rebase är det här alternativet implicit.

--init

Det här alternativet är endast giltigt för kommandot update. Initiera alla undermoduler för vilka "git submodule init" inte har anropats hittills innan uppdatering.

--name

Det här alternativet är endast giltigt för kommandot add. Det ställer in undermodulens namn till den angivna strängen istället för att som standard använda dess sökväg. Namnet måste vara giltigt som katalognamn och får inte sluta med ett /.

--reference <kodförråd>

Det här alternativet är endast giltigt för kommandona add och update. Dessa kommandon behöver ibland klona ett fjärrkodförråd I det här fallet, skickas det här alternativet till kommandot git-clone[1].

OBS: Använd inte det här alternativet om du inte noggrant har läst igenom anmärkningen för git-clone[1]s alternativ --reference, --shared och --dissociate.

--dissociate

Det här alternativet är endast giltigt för kommandona add och update. Dessa kommandon behöver ibland klona ett fjärrkodförråd I det här fallet, skickas det här alternativet till kommandot git-clone[1].

OBS: se OBS för alternativet --reference.

--recursive

Det här alternativet är endast giltigt för kommandona foreach, update, status och sync. Gå igenom undermoduler rekursivt. Operationen utförs inte bara i undermodulerna i det aktuella repot, utan även i alla kapslade undermoduler inuti dessa undermoduler (och så vidare).

--depth

Det här alternativet är giltigt för kommandona add och update. Skapa en ytlig klon med en historik avkortad till det angivna antalet revisioner. Se git-clone[1]

--recommend-shallow
--no-recommend-shallow

Det här alternativet är endast giltigt för kommandot update. Den initiala klonen av en undermodul kommer att använda den rekommenderade submodule.<namn>.shallow som tillhandahålls av .gitmodules-filen som standard. För att ignorera förslagen, använd --no-recommend-shallow.

-j <n>
--jobs <n>

Det här alternativet är endast giltigt för kommandot update. Klona nya undermoduler parallellt med lika många jobb. Standardinställningen är submodule.fetchJobs.

--single-branch
--no-single-branch

Det här alternativet är endast giltigt för kommandot update. Klona endast en gren under uppdatering: HEAD eller en som anges av --branch.

<sökväg>…​

Sökvägar till undermodul(er). När detta anges begränsas kommandot till att endast fungera på de undermoduler som finns vid de angivna sökvägarna. (Detta argument krävs med add).

FILER

Vid initialisering av undermoduler används en .gitmodules-fil i den översta katalogen i det innehållande kodförrådet för att hitta URL:en för varje undermodul. Denna fil ska formateras på samma sätt som $GIT_DIR/config. Nyckeln till varje undermoduls URL är "submodule.$name.url". Se gitmodules[5] för mer information.

GIT

En del av git[1]-sviten