Sobes.tech
Middle

Hoe gebeurt het samenvoegen (merge) of herschrijven van geschiedenis (rebase) in het versiebeheersysteem bij jouw bedrijf?

sobes.tech AI

Antwoord van AI

In ons team volgen we een workflow gebaseerd op Git. Om wijzigingen te integreren, gebruiken we twee hoofdbenaderingen: merge en rebase, afhankelijk van de situatie en het type tak.

Merge:

  • Wordt meestal gebruikt om langdurige takken samen te voegen, bijvoorbeeld dev in main, of om feature-takken in dev te integreren.
  • Maakt een merge-commit aan die duidelijk aangeeft wanneer de wijzigingen uit andere takken zijn samengevoegd.
  • Behoudt de volledige commitgeschiedenis, inclusief alle vertakkingen.
git checkout dev  // Overschakelen naar de doel tak
git merge feature/nieuwe-functie  // Voer de feature-tak samen

Rebase:

  • Wordt gebruikt om een schone en lineaire commitgeschiedenis te behouden in feature-takken tot aan hun integratie (meestal in dev).
  • Verplaatst de commits van de huidige tak naar de top van de doel tak (dev), waardoor de geschiedenis effectief "hergeschreven" wordt.
  • Vereenvoudigt de geschiedenis, door merge-commits voor elke kleine feature of fix te vermijden.
  • Belangrijk: Voer nooit rebase uit op openbare takken waarop anderen werken, omdat dit conflicten kan veroorzaken bij het pullen van wijzigingen.
git checkout feature/nieuwe-functie  // Overschakelen naar de feature-tak
git rebase dev  // Verplaats de commits van de feature-tak naar de top van dev
// Los indien nodig conflicten op
git push --force-with-lease  // Gebruik --force-with-lease voor een veilige push na rebase

Onze standaard workflow:

  1. Een nieuwe feature of fix wordt ontwikkeld in een aparte tak (feature/..., fix/...).
  2. Periodiek (voor pull request of om te synchroniseren met dev) wordt de feature-tak gerebased op de actuele dev. Dit helpt om conflicten vroegtijdig op te lossen.
  3. Na voltooiing van de ontwikkeling en code review, wordt de feature-tak gemerged in dev met no-ff (non-fast-forward), om de informatie over de samenvoeging te behouden. Of, minder vaak, wordt deze gesquashed tot één commit vóór het mergen in dev voor zeer kleine features of fixes.
  4. Vanuit dev worden periodiek releases gemaakt naar main (productietak), altijd via merge.

Op deze manier balanceren we het behoud van de commitgeschiedenis (merge) met het onderhouden van een schone ontwikkeltak (rebase van feature-takken).