Git videregående: Monorepo, Submodules og arbeidsflyter · leksjon

Feste submoduler til bestemte tagger og commits

Bli ekspert på å styre nøyaktig hvilken commit eller tag en submodul peker på, slik at bygginger blir reproduserbare og avhengighetsoppdateringer i avanserte arbeidsflyter blir bevisste og enkle å gjennomgå.

Leksjon 4 av 413 trinn

Feste submoduler til bestemte tagger og commits er en gratis leksjon i Git videregående: Monorepo, Submodules og arbeidsflyter på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Git videregående: Monorepo, Submodules og arbeidsflyter, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Git videregående: Monorepo, Submodules og arbeidsflyter inneholder totalt 4 leksjoner.

Undermoduler låser commits, ikke grener

En vanlig misforståelse er at en undermodul følger en gren. I virkeligheten registrerer superprosjektet en bestemt commit-SHA for hver undermodul. Grener er bare relevante når De velger å oppdatere.

Det er denne låsingen som gjør bygg basert på undermoduler reproduserbare på tvers av maskiner og over tid.

Undersøk den låste commiten

Se nøyaktig hvilken commit hver undermodul er låst til, med git submodule status. SHA-en først i linjen er den registrerte låsingen.

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

Slik leses statusprefikset

  • (mellomrom) — undermodulen står på den låste commiten
  • + — den utsjekkede commiten skiller seg fra låsingen
  • - — undermodulen er ikke initialisert
  • U — det finnes flettingskonflikter i undermodulen

Lås til en bestemt tagg

For å låse til en utgitt tagg går De inn i undermodulen, sjekker ut taggen og bekrefter deretter den nye pekeren i superprosjektet.

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 til en nøyaktig SHA

Noen ganger trenger De en commit mellom to utgivelser. Sjekk ut den nøyaktige SHA-en i undermodulen, og registrer den deretter i superprosjektet.

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

Detached HEAD er normalt her

Når De sjekker ut en tagg eller SHA, settes undermodulen i detached HEAD-tilstand. Dette er forventet og riktig når De låser en versjon. De kobler bare til en gren når De skal utvikle inne i undermodulen.

Valgfri sporing av gren

De kan registrere en foretrukket gren i .gitmodules, slik at git submodule update --remote vet hva som skal følges. Låsingen gjelder fortsatt frem til De uttrykkelig oppdaterer.

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

Kontrollerte oppdateringer med --remote

Bruk --remote for å oppdatere en undermodul til den nyeste commiten på grenen den følger. Se gjennom diffen før De bekrefter den nye låsingen, slik at oppdateringen er bevisst.

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

Håndhev låsinger i CI

Bygg bør mislykkes hvis en undermodul avviker fra låsingen. En CI-kontroll verifiserer at den utsjekkede SHA-en samsvarer med den registrerte.

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

Hvorfor bevisst låsing er viktig

Utilsiktede oppdateringer av undermoduler er en hyppig kilde til uforklarlige byggefeil. Når hver endring av en låsing behandles som en gjennomgåbar, bevisst commit, blir avhengighetene forutsigbare og etterprøvbare.

Tilbakestill en feil låsing

Hvis en oppdatering av låsingen ødelegger bygget, tilbakestiller De den som enhver annen endring: Commiteren i superprosjektet som flyttet pekeren, kan angres, slik at undermodulen går tilbake til den forrige SHA-en.

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

Kort kontroll

Test forståelsen Deres av låsing av undermoduler.

Oppsummering

De har lært at undermoduler låser commit-SHA-er, hvordan De leser prefikser fra git submodule status, hvordan De låser til en tagg eller en nøyaktig SHA, hvorfor detached HEAD er normalt, valgfri sporing av grener, kontrollerte oppdateringer med --remote og håndheving av avvik i CI. Bevisst låsing gjør avanserte undermoduloppsett reproduserbare.

Gratis å komme i gang

Lær deg Git videregående: Monorepo, Submodules og arbeidsflyter med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
12
Leksjoner
48

Ofte stilte spørsmål

Er leksjonen «Feste submoduler til bestemte tagger og commits» gratis?

Ja – hele teksten i «Feste submoduler til bestemte tagger og commits» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Git videregående: Monorepo, Submodules og arbeidsflyter-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Git videregående: Monorepo, Submodules og arbeidsflyter inneholder totalt 4 leksjoner.

Hva lærer jeg i «Feste submoduler til bestemte tagger og commits»?

Bli ekspert på å styre nøyaktig hvilken commit eller tag en submodul peker på, slik at bygginger blir reproduserbare og avhengighetsoppdateringer i avanserte arbeidsflyter blir bevisste og enkle å gj… Du øver på Git videregående: Monorepo, Submodules og arbeidsflyter med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Git videregående: Monorepo, Submodules og arbeidsflyter?

Ingen tidligere erfaring er nødvendig. Git videregående: Monorepo, Submodules og arbeidsflyter på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Feste submoduler til bestemte tagger og commits»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Git videregående: Monorepo, Submodules og arbeidsflyter-leksjonen?

Ja. Alle Git videregående: Monorepo, Submodules og arbeidsflyter-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Arbeide med grener i submoduler
  2. Nestede submoduler og komplekse oppsett
  3. Vanlige problemer med submoduler og løsninger
  4. Feste submoduler til bestemte tagger og commits
← Tilbake til Git videregående: Monorepo, Submodules og arbeidsflyter