Opdatering og synkronisering af submodules
Mestr processen med at opdatere submodules til deres seneste versioner og synkronisere submodule-URL'er
Opdatering og synkronisering af submodules er en gratis Avanceret Git: Monorepoer, undermoduler og arbejdsgange-lektion på CoddyKit. Dette er lektion 3 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.
Hold submodules opdaterede
Når du arbejder med Git-submodules, peger hovedprojektet (superproject) normalt på en bestemt commit i submodulet, ikke nødvendigvis på den nyeste version.
I denne lektion lærer du, hvordan du opdaterer dine submodules til nyere versioner og sikrer, at deres konfigurationer er korrekte.
Den grundlæggende `git submodule update`
Den mest almindelige kommando til at opdatere submodules er git submodule update. Kommandoen gør to primære ting:
- Den checker den nøjagtige commit ud, som superprojectet forventer for hvert submodule.
- Den sikrer, at submodulets arbejdskatalog stemmer overens med den registrerede commit.
Den henter ikke nye commits fra submodulets fjernrepository.
git submodule updateOpdatering af registrerede commits
Forestil dig, at dit hovedprojekts .gitmodules-fil angiver et submodule my-lib. Når en anden opdaterer my-lib i sit eget repository og derefter opdaterer superprojectets pegepind til my-lib, skal du opdatere.
Efter du har hentet ændringer i superprojectet, skal du køre dette for at få submodulets filer til at stemme overens med den nye registrerede commit:
git pull origin main
git submodule updateOpdatering til den nyeste version med `--remote`
Hvad nu, hvis du vil have dit submodule til at pege på den absolut nyeste commit på dets fjernbranches sporingsbranch og ikke kun den, som superprojectet har registreret?
Her er indstillingen --remote nyttig. Den henter fra submodulets fjernrepository og opdaterer dets HEAD til spidsen af den konfigurerede sporingsbranch (f.eks. main eller master).
`--remote` i praksis
Brug af --remote er en effektiv måde hurtigt at bringe submodules ajour med deres egne ændringer fra upstream. Det svarer til at køre git pull inde i hvert submodule.
Husk, at superprojectets submodule-pegepind efter dette er 'ude af synkronisering'. Du skal committe submodulets nye SHA-1-hash til superprojectet.
git submodule update --remote
git add my-lib
git commit -m "Update my-lib submodule to latest"Hvad er `git submodule sync`?
Nogle gange kan URL'en til et submodules fjernrepository ændre sig. Når det sker, skal URL'en, der er gemt i din lokale Git-konfiguration (.git/config) for det pågældende submodule, opdateres.
Kommandoen git submodule sync er udviklet til at synkronisere disse URL'er. Den læser URL'erne fra filen .gitmodules og opdaterer den lokale konfiguration for hvert submodule.
Hvornår skal du bruge `sync`?
Du bruger typisk git submodule sync i disse situationer:
- Efter nogen ændrer et submodules URL i filen
.gitmodules, og du henter disse ændringer. - Når du kloner et repository med submodules for første gang, selvom
git submodule update --initofte håndterer dette implicit. - Hvis du manuelt har ændret et submodules URL i
.gitmodulesog vil have din lokale konfiguration til at afspejle ændringen.
`sync` i praksis
Lad os sige, at URL'en til dit my-lib-submodule blev ændret fra old-url.git til new-url.git i filen .gitmodules. Efter du har hentet denne ændring ind i dit superproject, peger din lokale konfiguration for my-lib stadig på den gamle URL.
Kør denne kommando for at rette det:
git submodule sync my-lib
# Or for all submodules:
git submodule syncEn omfattende opdateringsarbejdsgang
Hvis du vil have en robust arbejdsgang, der dækker de fleste situationer ved opdatering af submodules, kan du kombinere kommandoer:
git pull origin main: Hent de nyeste ændringer i superprojectet.git submodule sync: Opdater submodule-URL'er, hvis de er blevet ændret.git submodule update --init --recursive --remote: Initialiser nye submodules, opdater alle eksisterende til deres nyeste version fra fjernrepositoryet, og håndter indlejrede submodules.
Det sikrer, at du er helt ajour.
git pull origin main
git submodule sync
git submodule update --init --recursive --remoteUdfordring: Opdatering af submodules
Du har hentet en ny version af dit superproject. Din kollega fortæller dig, at vedkommende har opdateret et submodule med navnet shared-utils i sit eget repository, men endnu ikke har committet den nye submodule-pegepind til superprojectet.
Hvilken kommando skal du bruge for at bringe submodulet shared-utils til dets nyeste tilstand fra fjernrepositoryet uden at vente på, at superprojectet registrerer det?
Opsummering: Hold submodules opdaterede
Du har lært, hvordan du håndterer opdateringer af submoduler:
git submodule update: Skifter til den commit, som hovedprojektet registrerer.git submodule update --remote: Henter de seneste ændringer fra submodulets fjernlager og opdaterer dets arbejdsmappe.git submodule sync: Synkroniserer submodulernes URL'er fra.gitmodulestil din lokale Git-konfiguration.
Disse kommandoer er afgørende for at vedligeholde et velfungerende og opdateret projekt med submoduler!
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 “Opdatering og synkronisering af submodules” gratis?
Ja — hele teksten til “Opdatering og synkronisering af submodules” 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 “Opdatering og synkronisering af submodules”?
Mestr processen med at opdatere submodules til deres seneste versioner og synkronisere submodule-URL'er 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 3 af 4.
Hvor lang tid tager lektionen “Opdatering og synkronisering af 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 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
- Introduktion til Git-submodules
- Tilføjelse og kloning af submodules
- Opdatering og synkronisering af submodules
- Fjernelse og deinitialisering af submodules