Git folosește ramuri pentru a izola fluxurile de dezvoltare, pentru a preveni poluarea ramurii de eliberare stabilă. Aducerea muncii într -o ramură în fluxul principal înseamnă contopirea ramurilor. Iată cum o faci.
Ce este o fuziune în Git?
Pregătirea de a îmbina o ramură în Git
Efectuarea unei fuziuni
Efectuând o fuziune rapidă în Git
Cum se rezolvă conflictele de îmbinare în git
Totul se contopește în cele din urmă
Ce este o fuziune în Git?
Git a fost conceput pentru a face ramificarea simplă și rapidă. Spre deosebire de alte sisteme de control al versiunilor, ramificarea pe GIT este o chestiune banală. În special pentru proiectele multi-dezvoltatoare, ramificarea este unul dintre instrumentele organizaționale de bază ale GIT.
Sucursale Sandbox noi eforturi de dezvoltare, astfel încât codul să poată fi modificat sau adăugat fără a afecta codul din alte sucursale, în special filiala principală sau principală. Aceasta conține de obicei versiunea stabilă a bazei dvs. de cod.
Izolarea acestor modificări de versiunea dvs. de cod stabilă are un sens perfect. Dar, mai devreme sau mai târziu, noul cod va fi testat, revizuit și va fi în șablon pentru a fi rulat în filiala principală. În acel moment, trebuie să vă îmbinați ramura în ramura principală.
De fapt, ramurile pot avea sub-ramuri, astfel încât s-ar putea să vă contopiți ramura într-o altă ramură în loc de filiala principală. Amintiți -vă doar că se îmbină să ia întotdeauna o ramură și să o îmbine într -un ţintă ramură, orice ar fi acea ramură. Dacă doriți să vă îmbinați filiala principală într -o altă sucursală, puteți face chiar și asta.
Ca majoritatea acțiunilor din GIT, efectuați fuziuni în depozitul dvs. local și le împingeți către depozitul dvs. de la distanță.
Pregătirea de a îmbina o ramură în Git
Avem un mic proiect de dezvoltare cu un depozit GIT local și un depozit GIT la distanță. Am creat o sucursală numită „Bugfix14” din filiala „Master” și am lucrat la o soluție la o eroare.
Această lucrare este finalizată și ne -am testat codul. Totul funcționează așa cum era de așteptat. Vrem să trecem aceste modificări în filiala principală, astfel încât soluția noastră să facă parte din următoarea versiune a software -ului.
Există o mică pregătire de făcut înainte de a efectua fuziunea. Trebuie să ne asigurăm că sucursala țintă - în acest caz, filiala „Master” - și sucursala pe care o vom contopi în ea sunt amândouă actualizate.
- Pe Branch Bugfix14 : Aceasta este ramura noastră actuală.
- Filiala dvs. este la curent cu „Origin/Bugfix” : Filiala din depozitul nostru local are aceeași istorie de comitere ca ramura din depozitul de la distanță. Asta înseamnă că sunt identice.
- nimic de comis Nu există modificări în zona de stadializare care nu au fost comise.
- Arborele de lucru curat : Nu există modificări nedezliate în directorul de lucru.
Toate acestea indică faptul că sucursala este actualizată și trebuie să procedăm. Dacă vreunul dintre acestea a indicat că există schimbări, va trebui să le punem în scenă, să le angajăm și să le împingem spre telecomandă. Dacă altcineva ar fi lucrat la aceste fișiere, este posibil să fie nevoie să -și tragem modificările din depozitul de la distanță.
Verificarea sucursalei pe care o vom fuziona simplifică procesul de fuziune. De asemenea, ne permite să verificăm că este actualizat. Să aruncăm o privire la filiala principală.
Obținem aceleași confirmări că sucursala „Master” este actualizată.
LEGATE DE: Cum să alegeți fluxul de lucru Git & amp; Model de ramificare potrivit pentru echipa ta
Efectuarea unei fuziuni
Filiala „Bugfix14” a fost ramificată din filiala „Master”. A existat un angajament pentru filiala „Master” după ce a fost creată filiala „Bugfix14”. Au fost câteva angajamente pentru filiala „Bugfix14”.
Ne -am asigurat că cele două sucursale ale noastre sunt actualizate și am verificat filiala „Master”. Putem emite comanda pentru a îmbina filiala „Bugfix14” în sucursala „Master”.
Fuziunea are loc. Filiala „Bugfix14” există încă, dar acum modificările care au fost făcute în acea ramură au fost contopite în filiala „Maestr”.
În acest caz, comanda de îmbinare efectuează un Fuziune cu trei căi . Există doar două sucursale, dar există trei angajamente implicate. Ele sunt șeful oricărei ramuri și un al treilea angajament care reprezintă acțiunea de îmbinare în sine.
Pentru a actualiza depozitul nostru de la distanță, putem folosi Git Push comanda.
Unii oameni preferă să șteargă ramurile laterale odată ce le -au contopit. Alții au grijă să le păstreze ca o evidență a adevăratului istoric de dezvoltare a proiectului.
Dacă doriți să ștergeți sucursala, puteți face acest lucru folosind
Filiala Git
comandă cu
-D
(șterge) opțiunea.
La Ștergeți ramura În depozitul de la distanță utilizați această comandă:
Veți avea o istorie liniară de angajare, dar nu va fi adevărata istorie.
LEGATE DE: Cum să ștergeți sucursalele Git pe depozite locale și la distanță
Efectuând o fuziune rapidă în Git
Dacă nu ați făcut niciun angajament cu filiala „Maestr”, istoria dvs. va arăta astfel. De asemenea, va arăta acest lucru dacă ați Reboted Filiala dvs. de dezvoltare, astfel încât să fie atașată la sfârșitul filialei „maestre”.
Deoarece nu există angajamente în filiala „Master”, pentru a îmbina filiala „Bugfix15”, tot ce trebuie să facă este să indice indicatorul de cap „Master” către ultimul angajament al filialei „Bugfix15”.
Git va efectua o fuziune rapidă Ori de câte ori poate . Dacă comiterea cu filiala „Master” înseamnă că nu este posibilă o îmbinare rapidă, GIT va folosi un Fuziune cu trei căi .
Nu poţi
forta
O fuziune rapidă-s-ar putea să nu fie posibilă, până la urmă-dar puteți declara că va fi o îmbinare rapidă sau nimic. Există o opțiune care îi instruiește pe Git să utilizeze o îmbinare rapidă dacă poate, dar să nu facă o fuziune în trei sensuri, dacă nu poate. Opțiunea este
--fff-numai
(doar îmbinare rapidă).
Aceasta îmbină ramura „Bugfix15” în ramura „Master”, dar numai dacă este posibilă o îmbinare rapidă.
În acest caz, au existat angajamente pentru filiala „Master”, astfel încât o îmbinare rapidă nu este posibilă.
Cum se rezolvă conflictele de îmbinare în git
Dacă aceleași porțiuni ale aceluiași fișier au fost modificate în ambele sucursale, ramurile nu pot fi contopite. Interacțiunea umană este necesară pentru a rezolva modificările conflictuale.
Aici, am făcut modificări la un fișier numit „Rot.C” într -o sucursală numită „Bugfix17” pe care vrem să o îmbinăm la filiala „Master”. Dar „Rot.C” a fost schimbat și în ramura „Master”.
Când încercăm să o îmbinăm, primim un avertisment că există conflicte. Git listează fișierele conflictuale și ne spune că fuziunea a eșuat. Ne -am putea întoarce complet folosind
--Bort
opțiune:
Dar rezolvarea fuziunii nu este atât de înfricoșătoare pe cât sună. Git a făcut unele lucrări pentru a ne ajuta. Dacă edităm unul dintre fișierele conflictuale - în cazul nostru, avem doar unul - vom găsi secțiunile de cod conflictuale evidențiate pentru noi.
Fiecare conflict este delimitat de șapte personaje mai puțin decât „
& lt; & lt; & lt; & lt; & lt; & lt; & lt;
”Și șapte personaje mai mari decât„
& gt; & gt; & gt; & gt; & gt; & gt; & gt;
„, Cu șapte semne egale”
========
" între ele.
- Codul de deasupra semnelor egale este din sucursala pe care o îmbinați în .
- Codul de sub semnul egal este codul din sucursala pe care încercați combina .
Puteți căuta cu ușurință unul dintre seturile de șapte caractere și puteți trece de la conflict la conflict prin fișierul dvs. Pentru fiecare conflict, trebuie să alegeți ce set de modificări veți păstra. Trebuie să editați codul pe care îl respingeți și liniile de șapte caractere pe care GIT le-a adăugat.
Vom păstra codul de la sucursala „Bugfix17”. După editare, fișierul nostru arată așa.
Acum putem continua cu fuziunea. Dar rețineți, folosim
angajează
comandă pentru a face acest lucru, nu
combina
comanda.
Angajăm schimbarea prin organizarea dosarului și comitând -o ca de obicei. Vom verifica starea înainte de a face angajamentul final.
Fuziunea este completă. Acum putem împinge acest lucru în depozitul nostru de la distanță.
LEGATE DE: Cum să remediați, să editați sau să anulați comitetele Git (schimbarea istoricului GIT)
Totul se contopește în cele din urmă
În cele din urmă, toate ramurile trebuie să fie contopite, astfel încât schimbările din ele nu devin orfane și uitate.
Fuzionarea sucursalelor este ușoară, dar tratarea conflictelor se poate complica în echipe mai mari și mai mari. Rezolvarea conflictelor poate necesita aport de la fiecare dezvoltator doar pentru a explica ce face codul lor și de ce și -au făcut schimbările. Trebuie să înțelegeți acest lucru, înainte de a putea lua o decizie în cunoștință de cauză cu privire la editările de păstrat.
- › Cum să redenumiți o sucursală în Git
- › Cum se verifică o ramură Git la distanță
- › Cum să păstrați schimbările în Git
- › Cum să comutați ramurile în github
- › Git Rebase: Tot ce trebuie să știi
- › OnePlus 11 este aici, dar cu un început dur
- › Microsoft Edge primește chat AI și un aspect nou pe Windows
- › Cele mai bune căști pentru fanii iPhone au atins cel mai mic preț