Git ir izplatīta versiju kontroles sistēma - rīks, kas ļauj izsekot izmaiņām failu komplektā vai laika gaitā koordinēt darbu. Programmētāji to bieži izmanto, lai koordinētu programmatūras avota koda izmaiņas un labāko daļu; to var izmantot jebkura veida satura izsekošanai. Tas ir īpaši izstrādāts, lai apstrādātu visu, sākot no maziem līdz liela apjoma projektiem ar vislielāko ātrumu un efektivitāti. Tas ir ārkārtīgi elastīgs, kas nozīmē, ka cilvēki var dalīties ar darbu tieši starp personīgajām krātuvēm, un grupas var koordinēt savu darbplūsmu caur centrālo krātuvi. Tas vienkārši ļauj diviem izstrādātājiem, kas sēž divās dažādās vietās, patstāvīgi veikt un reģistrēt izmaiņas, visiem bez centrālās krātuves.
Apvienošana ir Git izplatīta prakse, ko izmanto, lai integrētu izmaiņas no vienas nozares uz otru. Apvienot Git ir komanda, kas veic izmaiņas citā vietā. Tas ļauj izstrādātājiem izmantot savas neatkarīgās koda līnijas, kuras izveidojusi Git filiāle, un integrēt tās vienā filiālē. Tas maina tikai mērķa filiāli, kamēr saglabājas avota filiāles vēsture. Git rebase ir vēl viena komanda, kuru pamatā izmanto tam pašam mērķim, izņemot to, ka tā to dara pavisam savādāk. Viņi abi dara vienu un to pašu - iekļauj saistības no vienas nozares citā, bet atšķirība ir tajā, kā viņi to dara. Mēs izceļam dažus galvenos atšķirības punktus, salīdzinot divus.
Apvienot Git ir komanda, kas apvieno divas vai vairākas saistības vēstures filiāles. Apvienošana bieži apvieno tikai divas filiāles, lai gan Git atbalsta vienlaikus trīs, četru vai vairāku filiāļu apvienošanu. Git apvienošana izmanto Git pull, lai iekļautu izmaiņas no vienas filiāles uz otru vai no citas repozitorija pavisam. Apvienošanai jānotiek vienā repozitorijā, kas nozīmē, ka visām filiālēm, kuras jāapvieno, jāatrodas vienā repozitorijā. Apvienošanas situācijas parasti rodas no diviem vai vairākiem lietotājiem, mēģinot atjaunināt kopējo kodu. Parasti lietotājs apvieno filiāli citā filiālē vietējā krātuvē vietējā vidē. Git sapludināšana īpaši integrē avota filiāles saturu ar mērķa filiāli. Mērķa filiāle tiek mainīta, kamēr avota filiāle paliek.
Git rebase ir vēl viena alternatīva apvienošanai, ko izmanto, lai integrētu citu filiāli ar filiāli, kurā jūs šobrīd strādājat, izņemot to, ka tai ir lineāra saistību vēsture. Git rebase mērķis ir pārvietot filiāli no vienas vietas uz otru. Tā kā saistības nav mainīgas, tās nevar pārvietot, tāpēc tas nozīmē jaunu saistību veikšanu ar tādiem pašiem maiņas kopumiem un metadatiem. Atkārtota bāze būtiski maina priekšstatu par to, kad un kur tika izstrādāta saistību secība, kā rezultātā daži attīstības vēstures aspekti tiek zaudēti. Tas nozīmē, ka tiks mainītas sākotnējās saistības, uz kurām sākotnēji balstījās izstrāde. Pārrakstot vēsturi, tas efektīvi iekļauj visas jaunās saistības pamatnozarē. Rezultātā tas rada jaunas saistības katrai sākotnējās nozares filiālei.
- Lai gan gan apvienošana, gan atkārtota ieviešana ir visizplatītākie veidi, kā integrēt izmaiņas Git, un tie kalpo vienam un tam pašam mērķim - apvienot vairākas filiāles vienā - atšķirība ir tajā, kā viņi to sasniedz. Git sapludināšana integrē avota filiāles saturu ar mērķa filiāli, vienlaikus saglabājot katras saistību vēstures priekštečus, turpretī Git rebase iekļauj visas jaunās saistības galvenajā filiālē, pārrakstot vēsturi, izveidojot jaunas saistības katrai saistībai avota filiālē.
- Izmantojot Git sapludināšanu, jūs vispirms pārslēdzaties uz apvienojamo filiāli un pēc tam izmantojat sapludināšanas komandu, lai atlasītu apvienojamo filiāli. Ņemot vērā, ka filiāle norāda uz saistību un ka saistība ir tā granularitāte, ar kuru jūs saistāt, mainās, apvienojot komanda apvieno filiāles vai saistības līmenī. Turpretī Rebase ir nedaudz savādāka. Vispirms atlasiet atzarojuma filiāli un pēc tam izmantojiet rebase komandu, lai atlasītu, kur to ievietot.
- Apvienošana rada jaunu apņemšanos, kas atspoguļo divu nozaru apvienošanos. Tas apvieno izmaiņas no dažādām paralēlām attīstības līnijām (atzariem) kopā, izveidojot apvienošanās apņemšanos. Mērķis ir apvienot divas vai vairākas filiāles kopā, iekļaujot visas izmaiņas kopš pašreizējās filiāles novirzes punkta. Ātra pārsūtīšana uz priekšu ir Git noklusējuma sapludināšanas darbība. No otras puses, rebasing mainās atsevišķas saistības, pārrakstot projekta vēsturi, izveidojot jaunas saistības par katru sākotnējā filiāles saistību, kas savukārt rada lineāru vēsturi bez atšķirīgām atzarām.
- Git apvienošana nemaina vēsturi, vienlaikus saglabājot nozares kontekstu, kas nozīmē, ka esošās filiāles nekādā veidā netiek mainītas. Tas rada jaunu apņemšanos (ja vien tā nebija strauja apvienošanās), bet saistības joprojām ir sasniedzamas no nozares. No otras puses, Git rebase pilnveido potenciāli sarežģīto vēsturi. Saistības tiek pārrakstītas, vecās versijas aizmirstas un mainīts labojumu DAG. Saistības vairs nav sasniedzamas ar rebase nozīmi, jo jūs vairs nevarat atjaunot publicēto filiāļu skaitu.
Īsumā, gan apvienošana, gan atsākšana ir divi veidi, kā integrēt izmaiņas Git, taču tie atšķiras pēc tā, kā viņi to dara. Apvienošana ir viena soļa operācija ar vienu vietu, lai atrisinātu konfliktus, un saistības, kas bija sasniedzamas no filiāles, joprojām ir sasniedzamas. No otras puses, Rebase atkārtoti piemēro katru apņemšanos atsevišķi, pārrakstot vēsturi, izveidojot jaunas saistības katrai saistībai avota filiālē. Tātad tas, kas kādreiz bija sasniedzams, vairs nav sasniedzams. Atkārtota bāze būtiski maina priekšstatu par to, kad un kur tika izstrādāta saistību secība.