Git este un sistem de control al versiunii distribuite - un instrument pentru urmărirea modificărilor aduse unui set de fișiere sau a coordonării muncii în timp. Este adesea folosită de programatori pentru a coordona modificările sursă de cod software și cea mai bună parte; acesta poate fi utilizat pentru a urmări orice fel de conținut la toate. Este special conceput pentru a manipula totul, de la proiecte de dimensiuni mici la mari, cu o viteză maximă și eficiență. Este extrem de flexibil, ceea ce înseamnă că persoanele pot partaja munca direct între depozitele lor personale, iar grupurile își pot coordona fluxul de lucru printr-un depozit central. Pur și simplu permite celor doi dezvoltatori care stau în două locații diferite să facă și să înregistreze modificări în mod independent, toate fără un depozit central.
Îmbinarea este o practică obișnuită în care Git a folosit pentru a integra schimbările de la o ramură la alta. Combinarea Git este o comandă care comite modificările la o altă locație. Acesta permite dezvoltatorilor să-și ia linii independente de cod creat de filiala Git și să le integreze într-o singură ramură. Aceasta modifică numai ramura țintă în timp ce istoria ramurii sursă rămâne. Rebaza Git este încă o comandă folosită în esență pentru același scop, cu excepția faptului că o face în mod diferit. Ambele fac același lucru - încorporează comitete de la o ramură la alta - dar diferența constă în modul în care o fac. Subliniem câteva puncte distinctive cheie care le compară pe cele două.
Combinarea Git este o comandă care unifică două sau mai multe ramuri ale istoriei comitetelor. O fuziune unește adesea doar două ramuri, deși Git susține în același timp îmbinarea a trei, patru sau mai multe sucursale. Combinarea Git este utilizată de Git pentru a încorpora modificările de la o ramificație la alta sau dintr-un alt depozit complet. Îmbinarea trebuie să aibă loc într-un singur depozit, ceea ce înseamnă că toate ramurile care trebuie îmbinate trebuie să fie prezente în același depozit. O combinație de situații rezultă de obicei din doi sau mai mulți utilizatori, încercând să actualizeze codul comun. Cel mai adesea, un utilizator îmbină o sucursală într-o altă ramură în repozitoriul local într-un mediu local. Combinarea Git integrează în mod specific conținutul unei ramuri de sursă cu o ramură țintă. Ramura țintă este modificată, în timp ce ramura sursă rămâne.
Rebaza Git este o altă alternativă la fuziune folosită pentru a integra o altă ramură cu sucursala în care lucrați în prezent, cu excepția faptului că păstrează un istoric de comitere liniară. Scopul rebaziei Git este de a muta o sucursală dintr-o locație în alta. Deoarece angajamentele sunt imuabile, ele nu pot fi mutate, astfel că aceasta presupune efectuarea de noi comitete cu aceleași seturi de modificări și metadate. O rebază schimbă fundamental noțiunea de când și unde a fost dezvoltată o serie de angajamente, ceea ce duce la pierderea unor aspecte ale istoriei dezvoltării. Aceasta înseamnă că comiterea inițială pe care sa bazat inițial dezvoltarea va fi schimbată. Ea încorporează efectiv toate comitetele noi din ramura master prin rescrierea istoricului. Ca rezultat, creează comitete noi pentru fiecare comitet în ramura inițială.
- Deși ambele îmbinări și rebase sunt cele mai frecvente moduri de a integra schimbările în Git și ele servesc aceluiași scop - de a combina mai multe sucursale într-una - diferența constă în modul în care o realizează. Combinarea Git integrează conținutul unei ramuri sursă cu o ramură țintă, păstrând în același timp strămoșii fiecărui istoric al comitetelor, în timp ce rebase Git încorporează toate comitetele noi din ramura principală prin rescrierea istoricului prin crearea de comitete noi pentru fiecare comitet în ramura sursă.
- Cu îmbinarea Git, mai întâi treceți la filiala care urmează să fie îmbinată și apoi folosiți comanda de îmbinare pentru a selecta o ramură pentru a fuziona. Având în vedere faptul că o ramură indică o comitere și că o comitet este granularitatea cu care asociați modificările, comandă merge la nivel de sucursală sau de comitet. Rebase, pe de altă parte, este puțin diferit. Mai întâi selectați o ramură pentru a reîncura și apoi utilizați comanda rebase pentru a selecta unde să o puneți.
- Îmbinarea generează o nouă comitere care reprezintă fuziunea între două filiale. Acesta integrează schimbările din diferite linii paralele de dezvoltare (ramuri) împreună prin crearea unui comitet de îmbinare. Scopul este de a uni două sau mai multe sucursale împreună, inclusiv toate schimbările de la punctul de divergență în ramura actuală. Derularea rapidă este comportamentul implicit de îmbinare în Git. Rebarea, pe de altă parte, modifică comitetele individuale prin rescrierea istoriei proiectului prin crearea de noi comitete pentru fiecare comitet în ramura inițială, ceea ce are ca rezultat o istorie liniară fără sucursale divergente.
- Combinarea Git nu schimbă istoricul, păstrând în același timp contextul sucursalei, ceea ce înseamnă că ramurile existente nu sunt modificate în nici un fel. Creează o nouă comitere (cu excepția cazului în care a fost o îmbinare rapidă înainte), dar comitetele rămân accesibile din ramură. Git rebase, pe de altă parte, simplifică o istorie potențial complexă. Comitetele sunt rescrise, versiunile vechi sunt uitate, iar DAG-ul reviziilor este schimbat. Comitetele nu mai sunt disponibile cu rebase, ceea ce înseamnă că nu mai puteți reîncepe filialele publicate.
Ei bine, pe scurt, ambele îmbinări și rebase sunt cele două metode de integrare a schimbărilor în Git, dar ele diferă în modul în care o fac. Merge este o operație cu un singur pas, cu un singur loc pentru a rezolva conflictele, iar comitetele care au fost accesibile din ramură rămân accesibile. Rebase, pe de altă parte, reaplică fiecare angajament individual prin rescrierea istoriei prin crearea de noi comitete pentru fiecare comitet în ramura sursă. Deci, ceea ce a fost o dată accesibil nu mai este accesibil. O rebază schimbă fundamental noțiunea de când și unde a fost dezvoltată o serie de angajamente.