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>] [--] <förvar> [<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 <förvar>] [--ref-format <format>] [--depth <djup>] [--] <förvar> [<sökväg>]

Lägg till det givna förvaret 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".

<förvar> är URL:en till den nya undermodulens ursprungs-förvar. 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 förvar 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 bortkopplad 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ällförrådet ("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örråd, 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 förvar, antas det att superprojektets och undermodulens förvar 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 förvar 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ägsspec, 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 förvaret 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 <förvar>] [--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 fristående 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.

rebase

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 förvar 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 förvaret 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 förvaret. 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 förvaret. 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).

This works for any of the supported update procedures (--checkout, --rebase, etc.). The only change is the source of the target SHA-1. For example, submodule update --remote --merge will merge upstream submodule changes into the submodules, while submodule update --merge will merge superproject gitlink changes into the submodules.

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

Use this option to integrate changes from the upstream subproject with your submodule’s current HEAD. Alternatively, you can run git pull from the submodule, which is equivalent except for the remote branch name: update --remote uses the default upstream repository and submodule.<name>.branch, while git pull uses the submodule’s branch.<name>.merge. Prefer submodule.<name>.branch if you want to distribute the default upstream branch with the superproject and branch.<name>.merge if you want a more native feel while working in the submodule itself.

-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 fristående 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 bort. Om ett sammanfogningsfel 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 kopplas bort. 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 <förvar>

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

NOTE: Do not use this option unless you have read the note for git-clone[1]'s --reference, --shared, and --dissociate options carefully.

--dissociate

Det här alternativet är endast giltigt för kommandona add och update. Dessa kommandon behöver ibland klona ett fjärrförvar 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 förvaret 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