gitaarik/git_submodules.md

0 Comments

Hvorfor submodules?

i Git kan du tilføje en undermodul til et arkiv. Dette er dybest set arepository indlejret i din vigtigste repository. Dette kan være megetnyttigt. Et par fordele ved at bruge undermoduler:

  • Du kan adskille koden i forskellige arkiver.

    nyttigt hvis du har en kodebase med store komponenter, kan du gøre acomponent til en undermodul. På denne måde vil du ” have en renere Git log(commits er specifikke for en bestemt komponent).,

  • Du kan tilføje undermodulet til flere arkiver.

    nyttigt, hvis du har flere arkiver, der deler de sammekomponenter. Med denne tilgang kan du nemt opdatere demkomponenter i alle de arkiver, der tilføjede dem som en undermodul.Dette er meget mere convienient end at kopiere-indsætte koden i therepositories.

grundlæggende

Når du tilføjer en undermodul i Git, tilføjer du ikke koden for den submodul til hovedarkivet, du tilføjer kun oplysninger om den submodul, der føjes til hovedarkivet., Denne informationbeskriver, som forpligter undermodulet peger på. Denne måde, thesubmodule “s kode vandt” t automatisk blive opdateret, hvis undermodule”srepository opdateres. Dette er godt, fordi din kode måske ikke arbejder med den seneste commit af undermodulet, det forhindrer uventet adfærd.,

Tilføje en submodule

Du kan tilføje en submodule til et depot som dette:

Med standard konfiguration, vil dette tjek koden iawesome_submodule.git repository til path_to_awesome_submodulebibliotek, og vil tilføje oplysninger til hovedarkivet aboutthis submodule, som indeholder begå submodule point til,som vil være den gældende forpligte sig af standard-gren (normaltmaster branch) på tidspunktet for denne kommando er udført.,

Efter denne operation, hvis du gør en git status du”ll se to filer inthe Changes to be committed liste: .gitmodules fil og pathto den submodule. Når du forpligter og skubber disse filer, forpligter du / pushthe undermodulet til oprindelsen.

Sådan får du undermodulets”s-kode

Hvis en ny undermodul oprettes af en person, skal de andre personer i theteam starte denne undermodul. Først skal du fåOplysninger om undermodulet, dette hentes af en normalgit pull., Hvis der er nye undermoduler, vil du se det i output afgit pull. Derefter skal du starte dem med:

Dette vil trække al koden fra undermodulet og placere den i thedirectory, som den er konfigureret til.

Hvis du har klonet et arkiv, der gør brug af undermoduler, skal du også køre denne kommando for at få undermodulets kode. Dette gøres ikke automatisk af git clone.

skubbe opdateringer i undermodulet

undermodulet er kun et separat arkiv., Hvis du ønsker at foretage changesto det, du bør foretage ændringerne i denne repository og skubbe dem som i en almindelig Git repository (bare udføre git kommandoer i submodule”s mappe). Du bør dog også lade mainrepository ved, at du”har opdateret submodule”s repository, og makeit bruge den nyeste forpligte sig af lageret af submodule. Fordi hvisdu laver nye forpligtelser inden for en undermodul, vil hovedarkivet stadig pege på den gamle forpligtelse.,

så hvis du også vil have disse ændringer i dit hovedarkiv, skal du bede hovedarkivet om at bruge den seneste commit of thesubmodule. Hvordan gør du det?

så du har foretaget ændringer i undermodulets arkiv og begået dem i dets arkiv. Hvis du nu lave en git status i mainrepository, at du”ll se, at submodule er i listen Changes not staged for commit og det har teksten (modified content) bag det.Dette betyder, at undermodulets kode er tjekket ud på adifferent commit end hovedarkivet peger på., For at gøre det vigtigste Depot punkt til denne nye commit, skal du blot tilføjedenne ændring med git add og derefter begå og skubbe den.

holde dine undermoduler opdaterede

Hvis nogen opdaterede en undermodul, skal de andre teammedlemmer opdatere koden for deres undermoduler. Dette gøres ikke automatisk afgit pull, fordi det med git pull kun henter de oplysninger, som undermodulet peger på en andenkommit, men opdaterer ikke undermodulets kode., For at opdatere koden for dine undermoduler skal du køre:

Hvad sker der, hvis du ikke kører denne kommando?

Hvis du don”t køre denne kommando, koden for din undermodule er checkedout til en gammel commit. Når du gør git status vil du se thesubmodule i Changes not staged for commit liste med teksten(modified content) bag det. Det er ikke, fordi du har ændret thesubmodule”s kode, men fordi dens kode er tjekket ud til en differentcommit. Så Git ser dette som en ændring, men faktisk har du bare ikke opdateret undermodulets kode., Så hvis du “re arbejder withithsubmodules, don”t glemme at holde dine undermoduler up-to-date.

gør det lettere for alle

det er nogle gange irriterende, hvis du glemmer at starte og opdatere yoursubmodules. Heldigvis er der nogle tricks for at gøre det lettere:

Dette vil opdatere undermodulerne, og hvis de ikke er startet endnu, vilinitiere dem.

Du kan også have undermoduler inde i undermoduler., I dette tilfælde skal du”llwant at opdatere/indlede submodules rekursivt:

her er en masse at skrive, så du kan lave et alias:

Nu, når du udføre git update det vil udføre en git pull anda git submodule update --init --recursive, således at opdatere alle codein dit projekt.


Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *