Monorepos og Git-submodules
Lær om afvejningerne mellem monorepos og multi-repo-opsætninger, og hvordan Git-submodules indlejrer ét repository i et andet.
Monorepos og Git-submodules er en gratis Intensiv DevOps-uddannelse-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Intensiv DevOps-uddannelse, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.
Monorepo eller multi-repo
Et monorepo gemmer mange projekter i ét repository. En multi-repo-opsætning holder hvert projekt i sit eget repository. Begge dele er almindelige i stor skala.
Hvorfor teams vælger monorepos
Monorepos gør det nemt at:
- dele kode på tværs af projekter
- refaktorere atomart på tværs af grænser
- bruge én CI-konfiguration og én versionsordning
Udfordringer ved monorepos
Store monorepos kan vokse sig enorme og gøre kloning og CI langsommere. Værktøjer som sparse checkout og build-caches hjælper med at håndtere dette.
Hvad er et submodul?
Et submodul er et separat Git-lager, der er indlejret i et andet lager ved en bestemt commit. Det ydre lager holder styr på, hvilken commit fra det indre lager der skal bruges.
Tilføjelse af et submodul
Indlejr et eksternt lager på en sti med git submodule add.
git submodule add https://github.com/org/shared-lib libs/sharedFilen .gitmodules
Git registrerer stien og URL'en for hvert submodul i en versionsstyret .gitmodules-fil i lagerets rod.
[submodule 'libs/shared']
path = libs/shared
url = https://github.com/org/shared-libKloning med submoduler
En almindelig kloning efterlader submodulmapper tomme. Brug det rekursive flag til også at hente dem.
git clone --recurse-submodules https://github.com/org/appInitialisering af eksisterende submoduler
Hvis du allerede har klonet lageret, henter du submodulernes indhold med init og update.
git submodule update --init --recursiveOpdatering af et submodul
Submoduler forbliver fastlåst til en commit. Hvis du vil flytte et submodul til den nyeste commit, skal du opdatere det inde i submodulet og committe den nye markør i det overordnede lager.
git submodule update --remote libs/shared
git add libs/shared
git commit -m 'Bump shared lib'Submoduler over for subtree
git subtree er et alternativ, der fletter et andet lagers indhold direkte ind og dermed undgår kompleksiteten ved fastlåste markører, men mister den tydelige adskillelse.
Valg af fremgangsmåde
Brug et monorepo til tæt forbundne projekter, submoduler til at indlejre et delt bibliotek med selvstændig versionsstyring, og flere lagre, når teams er fuldstændig selvstændige.
Hurtigt tjek
Test din forståelse af monorepoer og submoduler.
Opsummering
Du har lært om monorepoer og submoduler:
- Monorepoer samler mange projekter; flere lagre holder dem adskilt
- Submoduler indlejrer et lager, der er fastlåst til en commit via
.gitmodules - Klon med
--recurse-submodules - Subtree er en alternativ strategi til indlejring
Lær Intensiv DevOps-uddannelse 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
- 142
- Lektioner
- 568
Ofte stillede spørgsmål
Er lektionen “Monorepos og Git-submodules” gratis?
Ja — alle 3 lektioner i læringssporet Intensiv DevOps-uddannelse, inklusive “Monorepos og Git-submodules”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Monorepos og Git-submodules”?
Lær om afvejningerne mellem monorepos og multi-repo-opsætninger, og hvordan Git-submodules indlejrer ét repository i et andet. Du øver dig i Intensiv DevOps-uddannelse 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å Intensiv DevOps-uddannelse?
Der kræves ingen tidligere erfaring. Intensiv DevOps-uddannelse 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 4 af 4.
Hvor lang tid tager lektionen “Monorepos og Git-submodules”?
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 Intensiv DevOps-uddannelse-lektion?
Ja. Alle Intensiv DevOps-uddannelse-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
- Git i IDE'er og udviklingsværktøjer
- Git-løsninger til virksomheder
- Skalering af Git til store teams
- Monorepos og Git-submodules