Avanceret Git: Monorepoer, undermoduler og arbejdsgange · Lektion

Indlejrede submodules og komplekse opsætninger

Udforsk strategier til håndtering af repositories, der selv indeholder submodules, og håndtering af afhængigheder på flere niveauer

Lektion 2 af 411 trin

Indlejrede submodules og komplekse opsætninger er en gratis Avanceret Git: Monorepoer, undermoduler og arbejdsgange-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Avanceret Git: Monorepoer, undermoduler og arbejdsgange, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Avanceret Git: Monorepoer, undermoduler og arbejdsgange-kurset indeholder 4 lektioner i alt.

Hvad er indlejrede submoduler?

Forestil dig et Git-repository, der indeholder et andet Git-repository som submodul. Forestil dig nu, at selve det indre submodul indeholder endnu et submodul! Det er en opsætning med indlejrede submoduler.

Det minder om russiske dukker for din kode, hvor hver dukke (repository) kan indeholde en anden, mindre dukke (submodul).

Hvorfor bruge indlejrede submoduler?

Indlejrede submoduler er nyttige til håndtering af komplekse projekter med dybe afhængigheder:

  • Modulær arkitektur: Opdel store systemer i mindre komponenter, der kan genbruges.
  • Delte biblioteker: En komponent (submodul) kan være afhængig af et fælles hjælpebibliotek (indlejret submodul).
  • Integration af tredjeparter: Integrer eksterne projekter, som selv har submoduler.

De hjælper med at holde relateret kode samlet, samtidig med at uafhængig udvikling er mulig.

Tilføjelse af submodulet på første niveau

Lad os begynde med at oprette et hovedprojekt og tilføje et almindeligt submodul. Vi kalder hovedprojektet SuperApp og det første submodul Frontend.

Initialiser først SuperApp, og tilføj Frontend:

mkdir SuperApp
cd SuperApp
git init
git submodule add https://github.com/your-org/Frontend.git Frontend

Tilføjelse af det indlejrede submodul

Nu går vi ind i vores Frontend-submodul og tilføjer endnu et repository, lad os sige UI-Components, som et indlejret submodul.

Husk at oprette commits for disse ændringer i både submodulet og det overordnede repository:

cd Frontend
git submodule add https://github.com/your-org/UI-Components.git UI-Components
git add .
git commit -m "Add UI-Components submodule"
cd ..
git add Frontend
git commit -m "Update Frontend submodule with UI-Components"

Kloning med indlejrede submoduler

Når nogen kloner dit SuperApp-repository, skal de udtrykkeligt bede Git om at initialisere og opdatere alle submoduler, inklusive de indlejrede.

Flaget --recursive er afgørende her:

git clone https://github.com/your-org/SuperApp.git
cd SuperApp
git submodule update --init --recursive

Navigering i indlejrede submoduler

Hvis du vil arbejde direkte i et indlejret submodul, skal du blot navigere gennem mappestrukturen ligesom i enhver anden mappe.

For eksempel for at nå UI-Components fra SuperApp:

cd SuperApp/Frontend/UI-Components
# Now you are inside the nested submodule

Opdatering af indlejrede submoduler

Hvis fjernrepositoryet for UI-Components (det indlejrede submodul) eller Frontend (submodulet på første niveau) modtager nye commits, vil du gerne opdatere dine lokale kopier.

Brug --remote til at hente det seneste fra den fjernsporende gren og --recursive til at anvende det på alle niveauer:

git submodule update --init --remote --recursive

Videregivelse af ændringer opad

Hvis du foretager og committer ændringer i et indlejret submodul (f.eks. UI-Components), skal du derefter opdatere det overordnede submodul (Frontend), så det henviser til denne nye commit. Til sidst skal du opdatere hovedrepositoryet (SuperApp), så det henviser til den nye tilstand for Frontend.

  • Opret en commit i UI-Components.
  • cd .. til Frontend, git add UI-Components, git commit.
  • cd .. til SuperApp, git add Frontend, git commit.

Det sikrer, at alle overordnede repositories følger den korrekte tilstand.

Udfordringer ved indlejrede submoduler

Indlejrede submoduler er effektive, men kan gøre tingene mere komplekse:

  • Frakoblet HEAD: Submoduler ender ofte i tilstanden frakoblet HEAD, hvilket betyder, at du ikke er på en gren. Husk at skifte til en gren, hvis du planlægger at oprette commits.
  • Versionshåndtering: Det kan være vanskeligt at holde styr på bestemte commit-SHA-1-værdier på tværs af flere niveauer.
  • Opsætningstid: Den første kloning og opdatering kan tage længere tid på grund af de mange repositories.

Hurtigt tjek: Kloningskommando

Du har netop klonet et hovedrepository, der bruger indlejrede submoduler. Hvilken kommando skal du køre som det næste for at sikre, at alle submoduler, inklusive de indlejrede, initialiseres og opdateres korrekt?

Opsummering: Indlejrede submoduler

I denne lektion undersøgte vi indlejrede submoduler og lærte, hvordan man håndterer repositories, der indeholder submoduler, som igen indeholder andre submoduler.

  • Vi lærte, hvordan man tilføjer og kloner repositories med afhængigheder på flere niveauer.
  • Vi gennemgik, hvordan man navigerer i og opdaterer disse komplekse strukturer.
  • Vi talte også om udfordringerne og vigtigheden af at videregive ændringer op gennem hierarkiet.

Indlejrede submoduler er et effektivt værktøj til komplekse, modulære projekter, men kræver omhyggelig håndtering!

Gratis at komme i gang

Lær Avanceret Git: Monorepoer, undermoduler og arbejdsgange med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Indlejrede submodules og komplekse opsætninger” gratis?

Ja — hele teksten til “Indlejrede submodules og komplekse opsætninger” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Avanceret Git: Monorepoer, undermoduler og arbejdsgange-kurset, skal du opgradere til CoddyKit PRO. Avanceret Git: Monorepoer, undermoduler og arbejdsgange-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Indlejrede submodules og komplekse opsætninger”?

Udforsk strategier til håndtering af repositories, der selv indeholder submodules, og håndtering af afhængigheder på flere niveauer Du øver dig i Avanceret Git: Monorepoer, undermoduler og arbejdsgange med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Avanceret Git: Monorepoer, undermoduler og arbejdsgange?

Der kræves ingen tidligere erfaring. Avanceret Git: Monorepoer, undermoduler og arbejdsgange på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “Indlejrede submodules og komplekse opsætninger”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Avanceret Git: Monorepoer, undermoduler og arbejdsgange-lektion?

Ja. Alle Avanceret Git: Monorepoer, undermoduler og arbejdsgange-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Arbejde med submodule-branches
  2. Indlejrede submodules og komplekse opsætninger
  3. Almindelige problemer med submodules og løsninger
  4. Fastlåsning af submodules til specifikke tags og commits
← Tilbage til Avanceret Git: Monorepoer, undermoduler og arbejdsgange