gitaarik/git_submodules.md (Svenska)

0 Comments

varför undermoduler?

i Git kan du lägga till en undermodul i ett förråd. Detta är i grunden arepository inbäddad i ditt huvudförråd. Detta kan vara mycketanvändbart. Ett par fördelar med att använda undermoduler:

  • Du kan separera koden i olika förråd.

    användbart om du har en kodbas med stora komponenter kan du göra acomponent till en undermodul. På så sätt har du en renare Git-logg (åtaganden är specifika för en viss komponent).,

  • Du kan lägga till undermodulen i flera förråd.

    användbart om du har flera förråd som delar samma komponenter. Med detta tillvägagångssätt kan du enkelt uppdatera demkomponenter i alla förråd som lade till dem som en undermodul.Detta är mycket mer convienient än kopiera klistra in koden i therepositories.

grunder

När du lägger till en undermodul i Git lägger du inte till koden försubmodulen i huvudförvaret, du lägger bara till information omsubmodulen som läggs till i huvudförvaret., Denna informationbeskriver vilka begår undermodulen pekar på. På så sätt uppdateras inte”s-koden automatiskt om undermodulen”srepository uppdateras. Detta är bra, eftersom din kod kanske intearbeta med den senaste begå av undermodulen, det förhindrar unexpectedbehaviour.,

lägga till en undermodul

Du kan lägga till en undermodul till ett förråd så här:

med standardkonfiguration kommer detta att kolla in koden förawesome_submodule.git – förvaret till katalogenpath_to_awesome_submoduleoch lägga till information till huvudförvaret omDenna undermodul, som innehåller begå Undermodulen pekar på, som kommer att vara den nuvarande begå av standard grenen (vanligtvismaster gren) vid den tidpunkt då detta kommando körs.,

Efter denna operation, om du gör en git status kommer du att se två filer i Changes to be committed lista: filen .gitmodules och sökvägen till undermodulen. När du begår och trycker på dessa filer begår du / trycker undermodulen till ursprunget.

hämta undermodulens”s-kod

om en ny undermodul skapas av en person måste de andra personerna iTeam initiera undermodulen. Först måste du fåinformation om undermodulen, detta hämtas av en normalgit pull., Om det finns nya undermoduler ser du det i produktionen avgit pull. Då måste du initiera dem med:

detta kommer att dra all kod från undermodulen och placera den ikatalog som den är konfigurerad till.

om du har klonat ett förråd som använder undermoduler, bör du också köra det här kommandot för att få undermodulens kod. Detta görs inte automatiskt av git clone.

tryck på uppdateringar i undermodulen

undermodulen är bara ett separat förråd., Om du vill göra ändringartill det, bör du göra ändringarna i det här förvaret och driva dem somi ett vanligt Git-arkiv (kör bara git-kommandona isubmodulens katalog). Du bör dock också låta mainrepository veta att du ”har uppdaterat submodule” s förvaret, och makeit använda den senaste commit av förvaret av undermodulen. För om du gör nya åtaganden inuti en submodule, kommer huvudförvaret fortfarande att peka på den gamla commit.,

Så, om du vill ha dessa ändringar i ditt huvudförråd också, dubör tala om för huvudförvaret att använda den senaste commit of thesubmodule. Hur gör du det här?

så du har gjort ändringar i undermodulens förråd och begått Demi dess förråd. Om du nu gör engit status I mainrepository ser du att undermodulen finns i listanChanges not staged for commit och den har texten(modified content) bakom den.Detta innebär att koden för undermodulen kontrolleras på en annan begå än huvudförvaret pekar på., För att göra huvudarkivet till den här nya commit, lägger du bara tilldenna förändring med git add och sedan begå och driva den.

uppdatera dina undermoduler

om någon har uppdaterat en undermodul, bör de andra gruppmedlemmarna uppdatera koden för sina undermoduler. Detta görs inte automatiskt avgit pull, för med git pull hämtar den bara den information som undermodulen pekar på anothercommit, men uppdaterar inte undermodulens kod., För att uppdatera koden för dina undermoduler bör du köra:

vad händer om du inte kör det här kommandot?

om du inte kör det här kommandot kontrolleras koden för undermodulen till en gammal begå. När du görgit status kommer du att se thesubmodule i listanChanges not staged for commit med texten(modified content) bakom den. Detta beror inte på att du ändradesubmodule ” s kod, men eftersom dess kod är markerad till en annankommit. Så Git ser detta som en förändring, men faktiskt dubara inte uppdatera undermodulens kod., Så om du”arbetar medsubmoduler, glöm inte att hålla dina undermoduler uppdaterade.

gör det lättare för alla

det är ibland irriterande om du glömmer att initiera och uppdatera yoursubmodules. Lyckligtvis finns det några knep för att göra det enklare:

detta kommer att uppdatera undermodulerna, och om de inte initieras ännu, kommer de att initiera dem.

Du kan också ha undermoduler inuti undermoduler., I det här fallet vill du uppdatera/initiera undermodulerna rekursivt:

det här är mycket att skriva, så att du kan skapa ett alias:

nu när du kör git update, kommer det att utföra en git pull , vilket uppdaterar hela kodeni ditt projekt.


Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *