Vali Shah
fejlesztőként sokunknak választania kell az egyesítés és a Rebase között. Az internetről kapott összes hivatkozással mindenki úgy véli, hogy “ne használja a Rebase-t, komoly problémákat okozhat.”Itt elmagyarázom, hogy mi az egyesülés és a rebase, miért kellene (és nem kellene) használni őket, és hogyan kell ezt megtenni.
Git Merge and Git Rebase serve the same purpose. Úgy tervezték, hogy több ágból származó változásokat integráljanak egybe., Bár a végső cél ugyanaz, ez a két módszer különböző módon valósítja meg, és hasznos tudni a különbséget, amikor jobb szoftverfejlesztővé válsz.
Ez a kérdés megosztotta a Git közösséget. Vannak, akik úgy vélik, hogy mindig rebase-nek kell lennie, mások pedig, hogy mindig egyesülnie kell. Mindkét oldalon van néhány meggyőző előnye.
Git Merge
az összevonás bevett gyakorlat a verzióvezérlő rendszereket használó fejlesztők számára. Függetlenül attól, hogy az ágakat tesztelésre, hibajavításokra vagy más okokra hozták létre, a összevonás változtatásokat követ el egy másik helyre., Ahhoz, hogy konkrétabb legyen, az összevonás egy forráság tartalmát veszi át, és integrálja őket egy célághoz. Ebben a folyamatban csak a célág változik. A forráság története ugyanaz marad.,da2a4595a”>
Profik
- Egyszerű, ismerős
- Megőrzi teljes története, időrendi sorrendben
- Fenntartja keretében a fióktelep
Cons
- követett el a történelem vált szennyezett sok merge vállalja,
- Hibakeresés a
git bisect
válhat nehezebb
Hogyan kell csinálni
Merge a mester ág a funkciót ág használja a checkout
vagy merge
parancsok.,
$ git checkout feature$ git merge master(or)$ git merge master feature
Ez egy új” Merge commit ” – et hoz létre a feature ágban, amely mindkét ág történetét tartalmazza.
Git Rebase
Rebase egy másik módja annak, hogy integrálja változások egyik ágról a másikra. Rebase tömöríti az összes változást egyetlen ” patch.”Ezután integrálja a tapaszt a célágra.
az egyesüléssel ellentétben az újraindítás simítja a történelmet, mert a befejezett munkát egyik ágról a másikra továbbítja. A folyamat során a nem kívánt történelem megszűnik.,
Rebases vagy milyen változások át a tetején a hierarchiában lefelé, pedig egyesíti vagy hogyan áramlását felfelé a
Profik
- Leegyszerűsíti egy potenciálisan komplex történelem
- Manipulálja egy egységes követett el könnyen (pl., visszatérve őket)
- Elkerüli a merge elkövetni “zaj”, a forgalmas repó ügyletek a sűrű ágak
- Tisztítja a köztes követ el azáltal, hogy egyetlen követett el, ami hasznos lehet a DevOps csapatok
Cons
- Squashing a funkció le, hogy egy maroknyi követ el tudja rejteni a kontextusban
- Rebasing nyilvános adattárak veszélyes lehet, ha dolgozik, mint egy csapat,
- Ez több munka: A rebase, hogy tartsa a funkciót ág frissítve mindig
- Rebasing távoli ágak szükséges erő nyomja., A legnagyobb probléma, amellyel az emberek szembesülnek, az, hogy kényszerítik a nyomást, de nem állították be a git push alapértelmezett értékét. Ez azt eredményezi, hogy a frissítések minden ága azonos nevű, mind helyben, mind távolról, és ez szörnyű foglalkozni.
ha helytelenül és akaratlanul átírja a történelmet, komoly problémákhoz vezethet, ezért győződjön meg róla, hogy tudja, mit csinál!
hogyan kell csinálni
a szolgáltatás ágát a mester ágra a következő parancsok segítségével Rebase.,
$ git checkout feature$ git rebase master
ez mozgatja a teljes funkció ág tetején a mester ág. Ezt úgy éri el újra írni a projekt története azáltal, hogy új vállalja, minden elkövet az eredeti (funkció) ág.
interaktív újraindítás
Ez lehetővé teszi a kötelezettségvállalások megváltoztatását, amikor az új ágba kerülnek. Ez erősebb, mint az automatizált rebase, mivel teljes ellenőrzést biztosít az ág elkötelezett története felett. Általában ezt használják, hogy tisztítsák meg a rendetlen történelem egyesítése előtt a funkció ág mester.,
$ git checkout feature$ git rebase -i master
Ez megnyitja a szerkesztőt azáltal, hogy felsorolja az összes áthelyezendő kötelezettséget.
pick 22d6d7c Commit message#1pick 44e8a9b Commit message#2pick 79f1d2h Commit message#3
Ez pontosan meghatározza, hogy az ág hogyan fog kinézni a rebase végrehajtása után. Az entitások újrarendelésével a történelem úgy néz ki, mint amit akar. Például olyan parancsokat használhat, mint a fixup
, squash
, edit
stb., a pick
helyett.
melyik használható
Tehát mi a legjobb?, Mit javasolnak a szakértők?
nehéz általánosítani és dönteni az egyikről vagy a másikról, mivel minden csapat más. De valahol el kell kezdenünk.
A csapatoknak több kérdést kell figyelembe venniük a Git rebase vs. merge Irányelvek beállításakor. Mert mint kiderül, az egyik munkafolyamat-stratégia nem jobb, mint a másik. Ez függ a csapat.
vegye figyelembe az Ön szervezetében az átminősítés és a Git kompetencia szintjét. Határozza meg, hogy milyen mértékben értékeli az egyszerű újraindítás, mint a nyomonkövethetőség, valamint a történelem egyesülő.,
végül az egyesülésről és az újraegyesítésről szóló döntéseket egy egyértelmű elágazási stratégia keretében kell figyelembe venni (lásd ezt a cikket, hogy jobban megértsük az elágazási stratégiát). A sikeres elágazási stratégia célja a csapatok szervezése körül.
mit ajánlok?
ahogy a csapat növekszik, nehéz lesz kezelni vagy nyomon követni a fejlesztési változásokat egy mindig egyesítési politikával. Ahhoz, hogy egy tiszta és érthető elkövetni történelem, használata Rebase ésszerű és hatékony.,
az alábbi körülményeket és iránymutatásokat figyelembe véve a Rebase-ből a legjobbat hozhatja ki:
- helyi szinten fejlődik: ha még nem osztotta meg munkáját senkivel. Ezen a ponton inkább az egyesítés újraindítását kell előnyben részesítenie, hogy a történelem rendben maradjon. Ha megvan az adattár személyes villája, amelyet nem osztanak meg más fejlesztőkkel, akkor biztonságosan újraindíthatja, még akkor is, ha a fiókjába tolta.
- a kód készen áll a felülvizsgálatra: létrehozott egy húzási kérelmet. Mások felülvizsgálja a munkát, és potenciálisan letölteni azt a villát a helyi felülvizsgálat., Ezen a ponton nem szabad újraindítani a munkáját. Létre kell hoznia a “rework” kötelezettséget, és frissítenie kell a szolgáltatás ágat. Ez segít a nyomonkövethetőségben a húzási kérelemben, valamint megakadályozza a véletlen előzmények törését.
- a felülvizsgálat megtörtént, és készen áll a célágba történő integrálásra. Gratulálok! Hamarosan törli a szolgáltatás ágát. Tekintettel arra, hogy más fejlesztők ettől a ponttól kezdve nem fognak letölteni-egyesítve ezeket a változásokat, ez az esélyed a történelem fertőtlenítésére., Ezen a ponton átírhatja a történelmet, és összehajthatja az eredeti követeket, valamint azokat a bosszantó “pr-UTÓMUNKÁKAT”, amelyek “összeolvadnak” egy kis fókuszált elköteleződésbe. Ezeknek a kötelezettségvállalásoknak az explicit egyesítése nem kötelező, de értéke van. Rögzíti, amikor a funkció végzett mester.
következtetés
remélem, hogy ez a magyarázat adott némi betekintést Git merge és Git rebase. Merge vs rebase stratégia mindig vitatható. De talán ez a cikk segít eloszlatni a kételyeit, és lehetővé teszi, hogy olyan megközelítést fogadjon el, amely a csapata számára működik.