Sobes.tech
Middle

Hogyan történik a branchek összevonása (merge) vagy a történet átírása (rebase) a verziókezelő rendszerben a cégnél?

sobes.tech MI

Válasz az MI-től

Csapatunkban egy Git-alapú munkafolyamatot követünk. A változtatások integrálásához két fő megközelítést használunk: merge és rebase, a helyzet és az ág típusától függően választva.

Merge:

  • Általában hosszú életű ágak összefésülésére alkalmazzák, például dev a main-be, vagy funkcióágak integrálására dev-be.
  • Egy merge commitet hoz létre, amely világosan mutatja, mikor történt a változtatások összefésülése más ágakról.
  • Megőrzi az összes commit történetét, beleértve az összes elágazást.
git checkout dev  // Átváltunk a célágra
git merge feature/új-funkció  // Összefésüljük a funkcióágat

Rebase:

  • A tiszta és lineáris commit történet fenntartására használják a funkcióágakban, amíg azok nem kerülnek integrálásra (általában dev-be).
  • Áthelyezi a jelenlegi ág commitjait a célág tetejére (dev), hatékonyan "újraírásával" a történetnek.
  • Egyszerűsíti a történetet, elkerülve a merge commitokat minden kis funkció vagy javítás esetén.
  • Fontos: Soha ne hajts végre rebase-t nyilvános ágakon, amelyeken más fejlesztők dolgoznak, mert ez konfliktusokat okozhat a változtatások pullolásakor.
git checkout feature/új-funkció  // Átváltunk a funkcióágra
git rebase dev  // Áthelyezzük a funkcióág commitjait dev tetejére
// Konfliktusok esetén oldjuk meg őket
git push --force-with-lease  // Használjuk a --force-with-lease-t biztonságos push-hoz rebase után

A mi standard munkafolyamatunk:

  1. Egy új funkció vagy javítás külön ágban (feature/..., fix/...) fejlesztődik.
  2. Időszakosan (pull request előtt vagy a dev-vel való szinkronizálás érdekében) a funkcióág rebase-olódik a jelenlegi dev verzióra. Ez segít korai szakaszban konfliktusokat megoldani.
  3. A fejlesztés és a kódáttekintés befejezése után a funkcióág no-ff-el (nem gyors előre) merge-ölődik a dev-be, hogy megőrizze a merge információt. Vagy ritkábban, squash-olva egy commit-ba, mielőtt merge-elnénk a dev-be, különösen nagyon kicsi funkciók vagy javítások esetén.
  4. A dev-ből időszakosan kiadások készülnek a main-be (gyártási ág), mindig merge segítségével.

Így egyensúlyt teremtünk a commit történet megőrzése (merge) és a tiszta fejlesztési ág fenntartása (rebase a funkcióágakon) között.