Avancerad Git: monorepon, submoduler och arbetsflöden · Lektion

Lås submoduler till specifika taggar och commits

Bemästra hur du exakt styr vilken commit eller tagg en submodul pekar på och säkerställer reproducerbara byggen samt avsiktliga, granskningsbara beroendeuppdateringar i avancerade arbetsflöden.

Lektion 4 av 413 steg

Lås submoduler till specifika taggar och commits är en gratis lektion i Avancerad Git: monorepon, submoduler och arbetsflöden på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Avancerad Git: monorepon, submoduler och arbetsflöden, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Avancerad Git: monorepon, submoduler och arbetsflöden innehåller totalt 4 lektioner.

Submoduler låser commits, inte grenar

En vanlig missuppfattning är att en submodul följer en gren. I verkligheten sparar superprojektet en specifik commit-SHA för varje submodul. Grenar spelar bara roll när ni väljer att uppdatera.

Det är denna låsning som gör byggen baserade på submoduler reproducerbara på olika datorer och över tid.

Inspektera den låsta committen

Se exakt vilken commit varje submodul är låst till med git submodule status. Den inledande SHA:n är den sparade låsningen.

git submodule status
# +a1b2c3d libs/engine (v2.3.0-4-ga1b2c3d)

Läs statusprefixet

  • (blanksteg) — submodulen står på den låsta committen
  • + — den utcheckade committen skiljer sig från låsningen
  • - — submodulen är inte initierad
  • U — det finns mergekonflikter i submodulen

Lås till en specifik tagg

Om ni vill låsa till en släppt tagg går ni in i submodulen, checkar ut taggen och committar sedan den nya pekaren i superprojektet.

cd libs/engine
git fetch --tags
git checkout v2.4.0
cd ../..
git add libs/engine
git commit -m 'Pin engine to v2.4.0'

Lås till en exakt SHA

Ibland behöver ni en commit mellan två releaser. Checka ut den exakta SHA:n i submodulen och registrera den sedan i superprojektet.

cd libs/engine
git checkout 9f8e7d6
cd ../..
git add libs/engine
git commit -m 'Pin engine to 9f8e7d6 hotfix'

Detached HEAD är normalt här

När ni checkar ut en tagg eller SHA hamnar submodulen i detached HEAD. Det är förväntat och korrekt när ni låser en version. Ni kopplar bara submodulen till en gren när ni tänker utveckla inuti den.

Valfri grenföljning

Ni kan registrera en föredragen gren i .gitmodules så att git submodule update --remote vet vad som ska följas. Låsningen gäller fortfarande tills ni uttryckligen uppdaterar.

[submodule "libs/engine"]
  path = libs/engine
  url = https://example.com/engine.git
  branch = stable

Kontrollerade uppdateringar med --remote

Om ni vill föra fram en submodul till den senaste versionen av dess följda gren använder ni --remote. Granska diffen innan ni committar den nya låsningen, så att uppdateringen är avsiktlig.

git submodule update --remote libs/engine
git diff --submodule
git add libs/engine && git commit -m 'Bump engine'

Upprätthåll låsningar i CI

Byggen bör misslyckas om en submodul avviker från sin låsning. En CI-kontroll verifierar att den utcheckade SHA:n matchar den registrerade.

git submodule status | grep '^+' && echo 'Submodule drift!' && exit 1

Varför avsiktlig låsning är viktig

Oavsiktliga uppdateringar av submoduler är en vanlig källa till mystiska byggfel. Om ni behandlar varje ändring av en låsning som en granskningsbar, avsiktlig commit förblir era beroenden förutsägbara och möjliga att granska.

Återställ en felaktig låsning

Om en uppdatering av låsningen förstör bygget återställer ni den som vilken annan ändring som helst: committen i superprojektet som flyttade pekaren kan ångras, så att submodulen återgår till sin föregående SHA.

git revert <pin-bump-commit>
git submodule update --init libs/engine

Snabbkontroll

Testa era kunskaper om låsning av submoduler.

Sammanfattning

Ni har lärt er att submoduler låser commit-SHA:er, hur prefixen i git submodule status läses, hur ni låser till en tagg eller en exakt SHA, varför detached HEAD är normalt, hur valfri grenföljning fungerar, hur kontrollerade uppdateringar med --remote görs och hur CI kan upptäcka avvikelser. Avsiktlig låsning håller avancerade submodulkonfigurationer reproducerbara.

Gratis att börja

Lär dig Avancerad Git: monorepon, submoduler och arbetsflöden med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
12
Lektioner
48

Vanliga frågor

Är lektionen ”Lås submoduler till specifika taggar och commits” gratis?

Ja – hela texten till ”Lås submoduler till specifika taggar och commits” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Avancerad Git: monorepon, submoduler och arbetsflöden, kan Ni uppgradera till CoddyKit PRO. Kursen i Avancerad Git: monorepon, submoduler och arbetsflöden innehåller totalt 4 lektioner.

Vad lär jag mig i ”Lås submoduler till specifika taggar och commits”?

Bemästra hur du exakt styr vilken commit eller tagg en submodul pekar på och säkerställer reproducerbara byggen samt avsiktliga, granskningsbara beroendeuppdateringar i avancerade arbetsflöden. Ni övar på Avancerad Git: monorepon, submoduler och arbetsflöden med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Avancerad Git: monorepon, submoduler och arbetsflöden?

Du behöver inga förkunskaper. Utbildningen i Avancerad Git: monorepon, submoduler och arbetsflöden på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.

Hur lång tid tar lektionen ”Lås submoduler till specifika taggar och commits”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Avancerad Git: monorepon, submoduler och arbetsflöden-lektionen?

Ja. Varje Avancerad Git: monorepon, submoduler och arbetsflöden-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Arbeta med submodulgrenar
  2. Kapslade submoduler och komplexa konfigurationer
  3. Vanliga problem med submoduler och lösningar
  4. Lås submoduler till specifika taggar och commits
← Tillbaka till Avancerad Git: monorepon, submoduler och arbetsflöden