gitaarik/git_submodules.md (Română)
de ce submodule?
în Git puteți adăuga un submodule într-un depozit. Acest lucru este practic arepository încorporat în depozitul principal. Acest lucru poate fi foarteutile. Câteva avantaje ale utilizării submodulelor:
-
puteți separa codul în diferite depozite.
util dacă aveți o codebase cu componente mari, ai putea face acomponent un submodule. În acest fel veți avea un jurnal git mai curat(comiterile sunt specifice unei anumite componente).,
-
puteți adăuga submodul la mai multe depozite.
util dacă aveți mai multe depozite care partajează același lucrucomponente. Cu această abordare puteți actualiza cu ușurință acesteacomponente din toate depozitele care le-au adăugat ca submodule.Acest lucru este mult mai convienient decât copierea-lipirea codul în therepositories.
Noțiuni de bază
când adăugați un submodule în Git, nu adăugați codul de thesubmodule la depozitul principal, adăugați doar informații despre thesubmodule care este adăugat la depozitul principal., Aceste informațiidescrie care comit submodul este îndreptat spre. În acest fel, thesubmodule”s Cod won”t fi actualizat automat în cazul în care submodul”srepository este actualizat. Acest lucru este bun, deoarece codul dvs. s-ar putea să nu funcționeze cu cea mai recentă comitere a submodului, previne comportamentul neașteptat.,
Adăugarea unui submodul
puteți adăuga un submodul de la un depozit de genul asta:
Cu configurația implicită, aceasta va verifica codulawesome_submodule.git
depozit la path_to_awesome_submodule
director, și va adăuga informații la depozitul principal despre asta submodul, care conține comite submodul de puncte,care vor fi actuale comite implicit ramură (de obiceimaster
ramură) în momentul în care această comandă este executată.,
După această operație, dacă faci un git status
vă”veți vedea două fișiere în Changes to be committed
listă: .gitmodules
fișier și pathto submodulul. Când comite și împinge aceste fișiere comite / pushthe submodul la origine.
obținerea codului submodul ” s
dacă un nou submodul este creat de o singură persoană, celelalte persoane dinechipa trebuie să inițieze acest submodul. Mai întâi trebuie să obținețiinformații despre submodule, acest lucru este preluat de un normalgit pull
., Dacă există submodule noi, îl veți vedea în ieșireagit pull
. Atunci”va trebui să inițieze le cu:
Acest lucru va trage tot codul din submodul și puneți-l în thedirectory că”s-a configurat să.
Dacă ați clonat un depozit care utilizează submodule, ar trebui să rulați și această comandă pentru a obține codul submodulului. Acest lucru nu se face automat prin git clone
.
împingând actualizări în submodul
submodul este doar un depozit separat., Dacă doriți să faceți modificări, ar trebui să faceți modificările în acest depozit și să le împingeți ca într-un depozit Git obișnuit (trebuie doar să executați comenzile git din Directorul thesubmodule). Cu toate acestea, ar trebui, de asemenea, să mainrepository știu că te”am actualizat submodul”s repository, și face uz de cele mai recente comite de depozit de submodul. Pentru că dacă faceți noi comiteri în interiorul unui submodule, depozitul principal va indica în continuare comiterea veche.,
deci, dacă doriți să aveți aceste modificări și în depozitul principal, ar trebui să spuneți depozitului principal să utilizeze cea mai recentă comitere a thesubmodule. Acum cum faci asta?
Deci ați făcut modificări în depozitul submodulului și le-ați comisîn depozitul său. Dacă acum fac un git status
în mainrepository, vă”veți vedea că submodul este în lista Changes not staged for commit
și are text (modified content)
în spatele ei.Acest lucru înseamnă că codul submodulului este verificat pe adifferent commit decât depozitul principal este îndreptat spre., Tomake depozitul principal punct la acest nou comis-o, ai addthis schimba cu git add
și apoi să se angajeze și împingeți-l.
menținerea submodulelor actualizate
dacă cineva a actualizat un submodul, ceilalți membri ai echipei ar trebui să actualizezecodul submodulelor lor. Acest lucru este făcut în mod automat de cătregit pull
, pentru că cu git pull
se preia doar informațiile de care submodul este îndreptat la anothercommit, dar nu – „t actualizare submodulul”s cod., Pentru a actualiza codul submodulelor dvs., ar trebui să rulați:
ce se întâmplă dacă nu executați această comandă?
dacă nu executați această comandă, codul submodulului dvs. este verificat la o comitere veche. Când faci git status
veți vedea thesubmodule în Changes not staged for commit
lista cu text(modified content)
în spatele ei. Acest lucru nu este pentru că te-ai schimbat thesubmodule”s cod, dar, deoarece codul este verificat la un differentcommit. Deci, Git vede acest lucru ca o schimbare, dar de fapt youdjust nu a actualizat codul submodulului., Deci, dacă lucrați cusubmodule, nu uitați să vă păstrați submodulele actualizate.
ceea ce face mai ușor pentru toată lumea
este uneori enervant dacă uitați să inițieze și să actualizezesubmodule. Din fericire, există câteva trucuri pentru a face mai ușor:
aceasta va actualiza submodulele și, dacă nu sunt inițiate încă, le va iniția.de asemenea, puteți avea submodule în interiorul submodulelor., În acest caz,”llwant de a actualiza/iniția submodule recursiv:
Aceasta este o mulțime de tip, astfel încât să puteți face un alias:
Acum, ori de câte ori executați git update
, se va executa un git pull
anda git submodule update --init --recursive
, astfel, actualizarea toate codeina proiectul dumneavoastră.