gitaarik/git_submodules.md (Magyar)
miért submodules?
a Git-ben hozzáadhat egy almodulot egy tárolóhoz. Ez alapvetően arepository ágyazva a fő tároló. Ez nagyon lehethasznos. A submodules használatának néhány előnye:
-
a kódot különböző tárolókba választhatja.
hasznos, ha van egy codebase nagy alkatrészek, akkor lehet, hogy acomponent egy almodul. Így lesz egy tisztább Git log (elkötelezi specifikusak egy bizonyos komponens).,
-
az almodul több tárolóhoz is hozzáadható.
hasznos, ha több tárolója van, amelyek ugyanazt osztják megkomponensek. Ezzel a megközelítéssel könnyen frissítheti ezeketkomponensek az összes tárolóban, amelyek almodulként adták hozzá őket.Ez sokkal közvetlenebb, mint másolni-beilleszteni a kódot therepositories.
alapjai
Ha hozzá egy almodul a Git, akkor nem adja hozzá a kódot a thesubmodule a fő tároló, csak hozzá információt thesubmodule, hogy hozzáadódik a fő tároló., Ez az információleírja, amely elkövetni a submodule mutat. Ily módon, thesubmodule “s code won” t automatikusan frissül, ha az almodul ” srepository frissül. Ez azért jó, mert a kód nem biztos, hogy a submodul legújabb commit-jével működik, megakadályozza a unexpectedbehaviour-t.,
Hozzáadása részmodult
hozzáadhat egy részmodult, hogy egy adattár, mint ez:
az alapértelmezett konfigurációs, ezt ellenőrizni fogja a kódot aawesome_submodule.git
adattár, hogy a path_to_awesome_submodule
könyvtárat, majd adjunk információt a fő adattár akarja ezt a részmodult, amely tartalmazza a elkövetni a részmodult mutat,amely a jelenlegi elkövetni a default ág (általában amaster
ág) abban az időben ez a parancs végrehajtódik.,
a művelet után, ha git status
két fájlt lát a Changes to be committed
lista: a .gitmodules
fájl és az almodul elérési útja. Amikor elkötelezi magát, majd nyomja ezeket a fájlokat elkövetni / pushthe submodule az origin.
szerzés a submodule ” s code
Ha egy új almodul által létrehozott egy személy, a többi ember theteam kell kezdeményezni ezt almodul. Először meg kell szereznie ainformációkat a submodulról, ezt egy normálgit pull
lekérdezi., Ha vannak új submodules látni fogja a kimenetgit pull
. Ezután meg kell kezdeményezni őket:
Ez húzza ki az összes kódot az almodulból, majd helyezze azt a könyvtárba, amelyre konfigurálva van.
ha klónozott egy adattárat, amely almodulokat használ, akkor ezt a parancsot is futtatnia kell, hogy megkapja az almodul kódját. Ezt nem a git clone
végzi.
A frissítések lenyomása a
almodulban az almodul csak egy külön tároló., Ha azt szeretnénk, hogy változásokhogy, meg kell, hogy a változások ebben a tárolóban, majd nyomja őket, mintegy rendszeres Git adattár (csak végre a GIT parancsok thesubmodule könyvtár). Azonban azt is meg kell, hogy a mainrepository tudja, hogy frissítette a submodule adattár, és makeit használja a legújabb elkövetni a tároló az almodul. Mert ha egy almodulban új elköteleződést hajt végre,akkor a fő tároló még mindig a régi elkötelezettségre mutat.,
tehát, ha ezeket a változtatásokat a fő tárolóban is szeretné, akkormeg kell mondania a fő tárolónak, hogy használja a thesubmodule legújabb elkötelezettségét. Hogy csinálod ezt?
tehát változtattál a submodule adattárában, és elkötelezted magad az adattárában. Ha most agit status
a főrepository-ban, akkor látni fogja, hogy az almodul aChanges not staged for commit
listában található, mögötte pedig a(modified content)
szöveg található.Ez azt jelenti,hogy az almodul kódját az adifferent commit-en ellenőrizzük, mint amire a fő tároló mutat., Take a fő tároló pont erre az új elkövetni, csak addez a változás git add
majd elkövetni, majd nyomja meg.
az almodulokat naprakészen tartva
ha valaki frissített egy almodulot, a többi csapattagnak frissítenie kell az almoduljaik kódját. Ez nem automatikusan történik agit pull
, mert a git pull
csak lekéri fel, hogy a részmodult mutat anothercommit, de nem”t frissíteni a részmodult”s kódot., Az almodulák kódjának frissítéséhez futtassa:
mi történik, ha nem futtatja ezt a parancsot?
Ha nem futtatja ezt a parancsot, a kód a submodule checkedout egy régi elkövetni. Ha nemgit status
látni fogja thesubmodule aChanges not staged for commit
lista a szöveg(modified content)
mögötte. Ez nem azért van, mert megváltoztatta thesubmodule kódját, hanem azért, mert a kódot kivették a differentcommit. Tehát Git látja ezt a változást, de valójában tecsak nem frissíti a submodule kódját., Tehát, ha dolgozik aszubmodulokat, ne felejtsük el, hogy tartsa a submodules up-to-date.
így mindenki számára könnyebb
néha bosszantó, ha elfelejti elindítani és frissíteni az önétszubmodulokat. Szerencsére van néhány trükk, hogy megkönnyítse:
Ez frissíti az almodulokat, és ha még nem kezdeményezik őket, akkor elindítják őket.
submodules is lehet A submodules belsejében., Ebben az esetben a”llwant frissíteni/kezdeményezni a submodules rekurzív:
Ez egy csomó gépelni, így lehet, hogy egy alias:
most, amikor végre git update
, akkor végre egy
anda git submodule update --init --recursive
, így frissíti a projekt összes kódját.