Git je sistem za nadzor nad razporejenimi različicami - orodje za sledenje spremembam nabora datotek ali usklajevanje dela skozi čas. Programerji jo pogosto uporabljajo za usklajevanje sprememb izvorne kode programske opreme in najboljši del; lahko ga sploh uporabite za sledenje poljubne vsebine. Zasnovan je posebej za upravljanje z vsemi majhnimi in velikimi projekti z največjo hitrostjo in učinkovitostjo. Izjemno prilagodljiv pomeni, da lahko posamezniki delijo delo neposredno med svojimi osebnimi skladišči, skupine pa lahko uskladijo svoj potek dela skozi osrednje skladišče. Preprosto omogoča dvema razvijalcema, ki sedita na dveh različnih lokacijah, da samostojno spreminjajo in beležijo spremembe, vse brez osrednjega skladišča.
Združevanje je v Gitu običajna praksa, ki se uporablja za integracijo sprememb iz ene podružnice v drugo. Git merge je ukaz, ki opravi spremembe na drugi lokaciji. Razvijalcem omogoča, da prevzamejo neodvisne vrstice kode, ki jih je ustvarila podružnica Git in jih integrirajo v eno vejo. To samo spremeni ciljno vejo, medtem ko zgodovina izvorne veje ostane. Git rebase je še en ukaz, ki se v osnovi uporablja za isti namen, le da to počne povsem drugače. Oba delata isto - vključita zaveze iz ene podružnice v drugo, vendar je razlika v tem, kako to počnejo. Izpostavljamo nekaj ključnih razločevalnih točk v primerjavi teh dveh.
Git merge je ukaz, ki združuje dve ali več vej zgodovine zavajanja. Združitev pogosto združuje samo dve veji, čeprav Git podpira združitev treh, štirih ali več vej hkrati. Git spajanje uporablja Git pull, da vključi spremembe iz ene podružnice v drugo ali iz drugega repozitorija. Združevanje mora potekati v enem samem skladišču, kar pomeni, da morajo biti v istem skladišču vse veje, ki jih je treba združiti. Situacije združevanja običajno nastanejo pri dveh ali več uporabnikih, ki poskušajo posodobiti skupno kodo. Najpogosteje uporabnik združi podružnico v drugo vejo v svojem lokalnem skladišču v lokalnem okolju. Git spajanje posebej združuje vsebino izvorne veje s ciljno vejo. Ciljna veja se spremeni, izvorna veja pa ostane.
Git rebase je še ena alternativa združevanju, ki se uporablja za integracijo druge veje z vejo, v kateri trenutno delate, le da ohranja linearno zgodovino zavez. Namen Git rebase je premik podružnice z ene lokacije na drugo. Ker so storitve nespremenljive, jih ni mogoče premakniti, zato to pomeni ustvarjanje novih zavez z enakimi nabori sprememb in metapodatkov. Zbirka podatkov bistveno spremeni pojem, kdaj in kje se je razvilo zaporedje obveznosti, kar je povzročilo izgubo nekaterih vidikov zgodovine razvoja. To pomeni, da se bo prvotna zaveza, na kateri je bil prvotno zasnovan razvoj, spremenila. Učinkovito vključuje vse nove obveze v glavni veji s prepisovanjem zgodovine. Kot rezultat, ustvari nove obveze za vsako zavezo v prvotni veji.
- Čeprav sta združevanje in ponovna povezava najpogostejši načini za integracijo sprememb v Gitu in služijo istemu namenu - združevanje več vej v eno - razlika je v tem, kako to dosežejo. Git merge združuje vsebino izvorne veje s ciljno vejo, hkrati pa ohranja dediščino vsake zgodovine zaznamkov, medtem ko Git rebase vključuje vse nove zaveze v glavni veji s ponovnim zapisovanjem zgodovine z ustvarjanjem novih elementov za vsako zavezo v izvorni veji.
- Z Git spajanjem najprej preklopite na vejo, ki jo je treba združiti, nato pa z ukazom spajanja izberite vejo, v katero se bosta združila. Glede na to, da veja kaže na element in da je zaveza natančnost, s katero povezujete spremembe, je združevanje ukaz združi na ravni podružnice ali zaveze. Po drugi strani je Rebase nekoliko drugačen. Najprej izberete vejo, ki jo želite obnoviti, in nato z ukazom rebase izberite, kam naj jo postavite.
- Združevanje ustvarja novo zavezo, ki predstavlja združitev dveh podružnic. Vključuje spremembe iz različnih vzporednih razvojnih linij (vej) skupaj z ustvarjanjem zaveze za združitev. Namen je združiti dve ali več vej skupaj, vključno z vsemi spremembami od trenutka razhajanja do trenutne veje. Hitro naprej je privzeto vedenje združevanja v Gitu. Po drugi strani pa s sproščanjem spremenite posamezne zaveze s prepisovanjem zgodovine projektov z ustvarjanjem novih elementov za vsako zavezo v prvotni veji, kar posledično povzroči linearno zgodovino brez razhajajočih vej.
- Git spajanje ne spremeni zgodovine, hkrati pa se ohrani kontekst veje, kar pomeni, da se obstoječe veje na noben način ne spremenijo. Ustvari novo zavezo (razen če je šlo za hitro združevanje), vendar so obveznosti še vedno dosegljive od podružnice. Ponovna povezava z Gitom poenostavlja potencialno zapleteno zgodovino. Članki so prepisani, stare različice so pozabljene in DAG sprememb je spremenjen. Dopisov ni več dosegljivih, kar pomeni, da ne morete več obnoviti objavljenih podružnic.
Na kratko, združevanje in ponovna postavitev sta dva načina integracije sprememb v Gitu, vendar se razlikujeta v tem, kako to počneta. Združevanje je operacija v enem koraku z enim mestom za reševanje konfliktov, zaveze, ki so bile dosegljive iz podružnice, pa so še vedno dosegljive. Po drugi strani pa Rebase vsako zavezo posamezno znova prepiše s prepisovanjem zgodovine, tako da ustvari nove elemente za vsak zagon v izvorni veji. Torej tega, kar je bilo nekoč dosegljivo, ni več dosegljivo. Zbirka podatkov bistveno spremeni pojem, kdaj in kje se je razvilo zaporedje elementov.