Git on hajautettu versionhallintajärjestelmä - työkalu tiedostojoukkoon tehtyjen muutosten seuraamiseen tai työn koordinointiin ajan myötä. Ohjelmoijat käyttävät sitä usein ohjelmistolähteen ja parhaan osan muutosten koordinointiin; sitä voidaan käyttää kaikenlaisen sisällön seuraamiseen. Se on erityisesti suunniteltu käsittelemään kaikkea pienistä suuriin projekteihin äärimmäisen nopeudella ja tehokkaasti. Se on erittäin joustava tarkoitus, että ihmiset voivat jakaa työtä suoraan henkilökohtaisten arkistojensa kesken, ja ryhmät voivat koordinoida työnkulkuaan keskitetyn arkiston kautta. Se antaa yksinkertaisesti kahden kahdessa eri paikassa istuvan kehittäjän tehdä ja tallentaa muutoksia itsenäisesti, kaikki ilman keskitettyä arkistoa.
Yhdistäminen on Gitissä yleinen käytäntö, jolla integroidaan muutokset haarahaaroihin. Yhdistäminen on komento, joka tekee muutokset toiseen sijaintiin. Sen avulla kehittäjät voivat ottaa itselleen itsenäiset koodirivit, jotka Git-haara on luonut, ja integroida ne yhdeksi haaraksi. Tämä muuttaa vain kohdehaaraa, kun lähdehaaran historia säilyy. Git rebase on jälleen yksi komento, jota käytetään pohjimmiltaan samaan tarkoitukseen, paitsi että se tekee sen aivan eri tavalla. He molemmat tekevät saman asian - sisällyttävät sitoumuksia haarasta toiseen - mutta ero on siinä, kuinka he tekevät sen. Korostamme joitain keskeisiä erottavia kohtia vertaamalla näitä kahta.
Git-yhdistäminen on komento, joka yhdistää kaksi tai useampia sitouttamishistorian sivuja. Yhdistäminen yhdistää usein vain kaksi haaraa, vaikka Git tukee kolmen, neljän tai useamman haaran yhdistämistä samanaikaisesti. Git pull käyttää Git-yhdistämistä sisällyttääkseen muutokset haarasta toiseen tai toisesta arkistosta kokonaan. Sulautumisen on tapahduttava yhdessä arkistossa, mikä tarkoittaa, että kaikkien yhdistämishaarojen tulee olla samassa arkistossa. Yhdistämistilanteet johtuvat yleensä kahdesta tai useammasta käyttäjästä, jotka yrittävät päivittää yleistä koodia. Yleisimmin käyttäjä yhdistää haaran toiseen haaraan paikallisessa arkistossaan paikallisessa ympäristössä. Git-yhdistäminen integroi lähdehaaran sisällön erityisesti kohdehaaraan. Kohdehaaraa vaihdetaan, kun taas lähdehaara pysyy.
Git rebase on jälleen yksi vaihtoehto yhdistämiselle, jota käytetään integroimaan toinen haara haaraan, jossa parhaillaan työskentelet, paitsi että sillä on lineaarinen sitouttamishistoria. Git rebase -yrityksen tarkoituksena on siirtää haara yhdestä paikasta toiseen. Koska komitit ovat muuttumattomia, niitä ei voida siirtää, joten tämä edellyttää uusien komitioiden tekemistä samoilla muutosryhmillä ja metatiedoilla. Repaasinmuutos muuttaa pohjimmiltaan käsitettä siitä, milloin ja missä sarja sitoumuksia kehitettiin, mikä johtaa siihen, että jotkut kehityshistorian näkökohdat menetetään. Tämä tarkoittaa, että alkuperäinen sitoumus, johon kehitys alun perin perustui, muuttuu. Se sisällyttää tehokkaasti kaikki uudet sitoumukset master-haaraan kirjoittamalla historian uudelleen. Seurauksena on, että se luo uusia sitoumuksia jokaiselle sitoumukselle alkuperäisessä haarassa.
- Vaikka sekä yhdistäminen että uudelleen perustaminen ovat yleisimpiä tapoja integroida muutokset Gitissä, ja ne palvelevat samaa tarkoitusta - yhdistää useita haaraa yhdeksi - ero siinä, kuinka ne saavutetaan. Git-yhdistäminen integroi lähdehaaran sisällön kohdehaaraan, säilyttäen samalla kunkin sitouttamishistorian esi-ikä, kun taas Git rebase sisällyttää kaikki päähaaran uudet sitoumukset kirjoittamalla historian kirjoittamalla uusia sitoumuksia jokaiselle sitoumukselle lähdehaarassa.
- Git-yhdistämisellä siirryt ensin yhdistettävään haaraan ja valitse sitten yhdistämiskomennolla yhdistävä haara. Koska haara osoittaa sitoumukselle ja että sitoumus on rakeisuus, johon yhdistät, muutos komento sulautuu haara- tai sitoutumistasolla. Rebase taas on hieman erilainen. Valitse ensin haara, jonka haluat perustaa uudelleen, ja valitse sitten rebase-komennolla, mihin se sijoitetaan.
- Yhdistäminen luo uuden sitoumuksen, joka edustaa kahden haaran sulautumista. Se integroi muutokset eri rinnakkaisista kehityslinjoista (haara) yhteen luomalla yhdistämissitoumuksen. Tarkoitus on yhdistää kaksi tai useampaa haaraa yhdessä, mukaan lukien kaikki muutokset nykyisen haarakohdan eroon liittymisen jälkeen. Pikakelaus eteenpäin on oletusyhdistelmäkäyttäytyminen Gitissä. Rebasing puolestaan muuttaa yksilöllisiä sitoumuksia kirjoittamalla projektihistoria luomalla uusia sitoumuksia jokaiselle sitoumukselle alkuperäisessä haarassa, mikä puolestaan johtaa lineaariseen historiaan ilman erillisiä sivukonttoreita.
- Git-yhdistäminen ei muuta historiaa säilyttäen samalla haarakontekstin, mikä tarkoittaa, että olemassa olevia haara ei muutu millään tavalla. Se luo uuden sitoumuksen (ellei se ole nopea eteenpäin yhdistäminen), mutta sitoumukset ovat edelleen tavoitettavissa sivuliikkeestä. Git rebase puolestaan virtaviivaistaa mahdollisesti monimutkaista historiaa. Sitoumukset kirjoitetaan uudelleen, vanhat versiot unohdetaan ja versioiden DAG muuttuu. Sitoumukset eivät ole enää saavutettavissa rebase-tarkoituksella, mikä tarkoittaa, että et enää pysty lisäämään julkaistuja sivuja.
No, pähkinänkuoressa, sekä yhdistäminen että rebase ovat kaksi tapaa integroida muutokset Gitiin, mutta ne eroavat toisistaan miten ne tekevät sen. Yhdistäminen on yksivaiheinen operaatio yhdessä paikassa konfliktien ratkaisemiseksi, ja sitoumukset, jotka olivat tavoitettavissa haarasta, ovat edelleen tavoitettavissa. Toisaalta Rebase hakee uudelleen jokaisen sitoumuksen yksilöllisesti kirjoittamalla historiaa luomalla uusia sitoumuksia jokaiselle sitoumukselle lähdehaarassa. Joten mikä oli kerran tavoitettavissa, ei ole enää tavoitettavissa. Repaasinmuutos muuttaa pohjimmiltaan käsitettä siitä, milloin ja missä sarja sitoumuksia kehitettiin.