Ga naar inhoud

Git rebase

Uit research TechTalk 15-10-2020

Git rebase of git merge(merge van branch in je eigen branch).

Korte beschrijving wat beide doen:

  • git merge: “Merge takes all the changes in one branch and merges them into another branch in one commit.”

  • git rebase: “Rebase says I want the point at which I branched to move to a new starting point.”

Wanneer gebruik je een van de twee?

“Merge: Let’s say you have created a branch for the purpose of developing a single feature. When you want to bring those changes back to master, you probably want merge (you don’t care about maintaining all of the interim commits).

Rebase: A second scenario would be if you started doing some development and then another developer made an unrelated change. You probably want to pull and then rebase to base your changes from the current version from the repository.”

Git merge behoud de geschiedenis van je branch terwijl git rebase de geschiedenis juist herschrijft.

Voordelen van beide:

  • Rebase Stroomlijnt een potentiële complexe git historie. Voorkomt merge commit ruis in drukke repositories met drukke branches. Schoont direct commits op door ze in 1 commit te stoppen, wat weer handig kan zijn voor devOps teams.

  • Merge: Simpel en bekend. Behoudt de volledige historie van je repository in chronologische orde. Behoudt de context van je branch.

Er word aangeraden voor kleine teams om git rebase te gebruiken.

Uiteindelijk ligt het eraan hoe groot de team size is en de hoeveelheid mensen die in 1 branch en repo werken. Ook de development velocity van het coden heeft hiermee te maken. Ook hangt het er van af hoe je je git history wilt behouden. Beide zijn goede opties, ieder zijn ze niet beter als de ander.

https://www.partech.nl/nl/publicaties/2020/06/git-merge-vs-rebase---how-to-choose-one#

Besloten om vanaf 15-10 Git Rebase in te zetten

Commands voor het gebruiken van git rebase zijn als volgt:

Bij merge conflicten van bijv. je feature branch -> develop gebruik je het volgende

Terminal window
git checkout feature-branch
git fetch
git rebase origin/develop
git push --force

vervolgens los je de merge conflicten op en commit je de changes naar je branch.