Shah Vali

Kuten Kehittäjä, monet meistä täytyy valita, Yhdistää ja Rebase. Kaikki viittaukset saamme internetistä, kaikki uskoo ”Älä käytä Rebase, se voi aiheuttaa vakavia ongelmia.”Tässä selitän, mitä yhdistäminen ja rebase ovat, miksi sinun pitäisi (ja ei pitäisi) käyttää niitä, ja miten tehdä niin.

Git Merge ja Git Rebase palvelevat samaa tarkoitusta. Ne on suunniteltu integroimaan muutokset useasta haarasta yhdeksi., Vaikka lopullinen tavoite on sama, nämä kaksi menetelmää saavuttaa sen eri tavoin, ja on hyödyllistä tietää ero, kun sinusta tulee parempi ohjelmistokehittäjä.

Tämä kysymys on jakanut Git-yhteisön. Jotkut uskovat, että sinun pitäisi aina uudelleen ja toiset, että sinun pitäisi aina yhdistää. Kummallakin puolella on vakuuttavia etuja.

git Merge

yhdistäminen on yleinen käytäntö versionhallintajärjestelmiä käyttäville kehittäjille. Riippumatta siitä, luodaanko haaroja testausta, virheenkorjauksia tai muita syitä varten, yhdistäminen tekee muutoksia toiseen paikkaan., Tarkemmin sanottuna yhdistäminen vie lähdehaaran sisällön ja yhdistää ne kohdehaaraan. Tässä prosessissa vain kohdehaara muuttuu. Lähdehaaran historia pysyy samana.,da2a4595a”>

Yhdistä Master -> kehityshaaran

Hyödyt

  • Yksinkertainen ja tuttu
  • Säilyttää täydellisen historian ja aikajärjestyksessä
  • Ylläpitää yhteydessä haara

Miinukset

  • Tehnyt historiaa voi tulla saastunut paljon yhdistää sitoutuu
  • Testaus käyttäen git bisect voi tulla kovemmin

Miten tehdä se

Yhdistä master haara osaksi kehityshaaran käyttäen checkout ja merge – komentoja.,

$ git checkout feature$ git merge master(or)$ git merge master feature

Tämä luo uuden ”Yhdistää sitoutua” ominaisuus haara, joka omistaa historian sekä oksat.

Git Rebase

Rebase on toinen tapa yhdistää muutokset yhdestä haara toiseen. Rebase pakkaa kaikki muutokset yhdeksi ” laastariksi.”Sitten se yhdistää laastarin kohdehaaraan.

toisin Kuin yhdistäminen, rebasing litistää historia, koska se siirtää valmiin työn haarasta toiseen. Samalla eliminoidaan ei-toivottu historia.,

Rebases ovat, miten muutokset pitäisi kulkea ylhäältä hierarkiassa alaspäin, ja sulautuu ovat, miten ne virtaavat takaisin ylöspäin

Rebase ominaisuus haara osaksi master

Hyödyt

  • Tehostaa mahdollisesti monimutkainen historia
  • Manipuloimalla yhden sitoutua on helppoa (esim., palataan ne)
  • Vältetään yhdistää sitoutua ”kohina” kiireinen repos kanssa kiireinen oksat
  • Puhdistaa väli sitoutuu tekemällä niistä yhden tehnyt, joka voi olla hyödyllistä DevOps joukkueet

Miinukset

  • Squashing ominaisuus alas kourallinen sitoutuu voi piilottaa yhteydessä
  • Rebasing julkisia arkistoja, voi olla vaarallista, kun työskentelee joukkue
  • Se on enemmän työtä: Käyttämällä rebase pitää kehityshaaran päivitetään aina
  • Rebasing kauko oksat vaatii sinua pakottaa., Suurin ongelma, jonka ihmiset kohtaavat, on se, että he pakottavat työntämään, mutta eivät ole asettaneet git push-oletusarvoa. Tämä johtaa päivityksiin kaikkiin saman nimisiin haaroihin sekä paikallisesti että etänä, ja se on kamalaa käsitellä.

Jos rebase väärin ja vahingossa kirjoittaa historiaa, se voi aiheuttaa vakavia kysymyksiä, joten varmista, että tiedät mitä olet tekemässä!

Miten tehdä se

Rebase ominaisuus haara päälle master haara käyttäen seuraavia komentoja.,

$ git checkout feature$ git rebase master

Tämä siirtää koko kehityshaaran päälle master haara. Se tekee tämän kirjoittamalla projektihistorian uudelleen luomalla uusia sitoumuksia jokaiselle alkuperäisen (ominaisuus) sivukonttorin toimitukselle.

Interactive Rebasing

Tämä mahdollistaa toimitusten muuttamisen, kun ne siirretään uuteen haaraan. Tämä on tehokkaampi kuin automatisoitu uudelleenlastaus, koska se tarjoaa täydellisen hallinnan haaran sitoutumishistoriaan. Tyypillisesti tätä käytetään siivota sotkuinen historia ennen sulauttamista ominaisuus haara master.,

$ git checkout feature$ git rebase -i master

Tämä avaa editorin luettelemalla kaikki sitoutuu siihen, että tietoja voidaan siirtää.

pick 22d6d7c Commit message#1pick 44e8a9b Commit message#2pick 79f1d2h Commit message#3

Tämä määrittelee, mitä haara näyttää, kun rebase suoritetaan. Tilaamalla entiteetit uudelleen, voit saada historian näyttämään miltä haluat. Esimerkiksi, voit käyttää komentoja kuten fixup, squash, edit jne, tilalle pick.

kumman käyttö

Niin mikä on parasta?, Mitä asiantuntijat suosittelevat?

on vaikea yleistää ja päättää jommastakummasta, koska jokainen joukkue on erilainen. Mutta meidän on aloitettava jostain.

joukkueiden on harkittava useita kysymyksiä asettaessaan Git rebase vs. merge-käytäntöjään. Koska kuten käy ilmi, yksi työnkulun strategia ei ole parempi kuin toinen. Se riippuu joukkueestasi.

harkitse uudelleenpasaamisen ja GIT-osaamisen tasoa koko organisaatiossasi. Määritä, missä määrin arvostat alennuksen yksinkertaisuutta verrattuna yhdistämisen jäljitettävyyteen ja historiaan.,

Lopulta, päätökset yhdistäminen ja rebasing tulisi harkita yhteydessä selkeä aluevaltaus strategia (Katso tämä artikkeli ymmärtää enemmän aluevaltaus strategia). Onnistunut haarautumisstrategia on suunniteltu tiimiesi organisaation ympärille.

mitä suosittelen?

kun joukkue kasvaa, on vaikea hallita tai jäljittää kehitysmuutoksia aina yhdistämiskäytännöllä. On puhdas ja ymmärrettävää tehnyt historiaa, käyttäen Rebase on järkevää ja tehokasta.,

Ottamalla huomioon seuraavat seikat ja ohjeet, voit saada paras ulos Rebase:

  • Olet kehittää paikallisesti: Jos sinulla ei ole jakaa työsi muiden kanssa. Tässä vaiheessa kannattaa mieluummin luopua sulautumisesta, jotta historia pysyy siistinä. Jos sinulla on henkilökohtaisia haarukka arkistossa ja joka ei ole jaettu muiden kehittäjien kanssa, olet turvassa rebase jopa sen jälkeen, kun olet työntää teidän haara.
  • koodisi on valmis tarkistettavaksi: loit vetopyynnön. Toiset tarkastelevat työtäsi ja mahdollisesti hakevat sen haarukkaan paikallista tarkastelua varten., Tässä vaiheessa sinun ei pitäisi lisätä työtäsi. Sinun pitäisi luoda ’rework’ – toimitukset ja päivittää ominaisuushaarasi. Tämä auttaa jäljitettävyyteen vetopyynnössä ja estää vahingossa historian rikkoutumisen.
  • arvostelu on tehty ja valmis integroitavaksi kohdehaaraan. Onnitteluni! Poistat kohta toimintohaarasi. Koska muut kehittäjät eivät nouda-sulautuvat näihin muutoksiin tästä eteenpäin, tämä on tilaisuutesi puhdistaa historiasi., Tässä vaiheessa, voit kirjoittaa historiaa uudelleen ja taita alkuperäinen sitoutuu ja ne ärsyttävä ’pr rework’ ja ’yhdistä’ sitoutuu osaksi pieni joukko keskittynyt sitoutuu. Eksplisiittisen yhdistämisen luominen näille sitoutumisille on vapaaehtoista, mutta sillä on arvoa. Se tallentaa, kun ominaisuus valmistui maisteriksi.

Johtopäätös

toivon, että tämä selvitys on annettu joitakin oivalluksia Git merge ja Git rebase. Merge vs rebase-strategia on aina kyseenalainen. Mutta ehkä tämä artikkeli auttaa hälventämään epäilyksesi ja antaa sinun omaksua lähestymistapa, joka toimii tiimisi.