https://eduspaces.ro/s/pro-git/capitol/s-5/?pdf=1
🤝 5. Distributed Git
Fluxuri de lucru distribuite, contribuția la un proiect și întreținerea unui proiect.
Bază (2)
Un singur depozit central acceptă codul și toți își sincronizează munca cu el; dacă altcineva a trimis înaintea ta, trebuie să aduci și să integrezi modificările lui înainte de push.
Ramură de scurtă durată, creată și folosită pentru o singură funcționalitate sau lucrare; în Git este obișnuit să creezi, să folosești, să integrezi și să ștergi astfel de ramuri de mai multe ori pe zi.
Aprofundare (6)
Modelele de colaborare posibile datorită naturii distribuite a lui Git, în care fiecare dezvoltator poate fi atât contribuitor, cât și administrator de depozit.
Fiecare dezvoltator are propriul depozit public și citește din depozitul canonic al proiectului; managerul de integrare adaugă depozitul contribuitorului ca remote, integrează local și publică în depozitul principal (modelul GitHub).
Recomandări pentru commit-uri: fără erori de spații albe (git diff --check), fiecare commit un set logic de modificări, mesaj cu un rezumat scurt, un rând liber și o explicație detaliată.
Diferențele dintre două versiuni ale unor fișiere (liniile adăugate și șterse), așa cum le arată git diff; se pot trimite și aplica între depozite (de exemplu prin e-mail).
Persoana care întreține un proiect: primește contribuțiile (patch-uri, ramuri), le evaluează și le integrează, etichetează versiunile și le pregătește pentru lansare.
Ca un rebase pentru un singur commit: ia patch-ul introdus de un commit și încearcă să îl reaplice pe ramura curentă (git cherry-pick).
Detaliu (7)
Variantă pentru proiecte foarte mari (de exemplu nucleul Linux): locotenenții integrează contribuțiile pe subsisteme, iar dictatorul binevoitor integrează ramurile locotenenților și publică în depozitul de referință.
Produce un rezumat al modificărilor pe care ceri să fie aduse (ramura de bază și URL-ul depozitului tău), de trimis pe e-mail maintainerului.
Generează fișiere în format mbox, câte unul per commit (mesajul ca subiect și corp, apoi patch-ul), de trimis pe o listă de e-mail; aplicarea lor păstrează informațiile commit-ului.
Aplică un patch creat cu git diff sau diff; aplică totul sau nimic.
„Apply a series of patches from a mailbox”: aplică patch-urile generate cu format-patch dintr-un fișier mbox și creează commit-urile, cu autorul original.
Generează un nume lizibil pentru un commit: numele celei mai recente etichete anterioare, numărul de commit-uri de atunci și o parte din SHA-1; implicit folosește etichete anotate (--tags și pe cele lightweight).
Rezumă commit-urile dintr-un interval (de exemplu de la ultima versiune), grupate pe autor — un fel de jurnal al modificărilor (changelog).
Niciun concept nu se potrivește filtrului.