gitaarik/git_submodules.md (Română)

0 Comments

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_submoduledirector, ș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ă.


Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *