• BlackPenguins@lemmy.world
    link
    fedilink
    arrow-up
    20
    ·
    edit-2
    8 months ago

    Merge is taking all the code from the master branch and combining it with the task branch, resulting in a commit for just the merge itself.

    Rebase is “re-basing” where your task branch was created from off the master branch. It essentially takes all the commits from master that happened since you branched, REWRITES THE HISTORY of your task branch by inserting those master branch commits before all your existing commits, and effectively makes your task branch look like it was branched yesterday instead of like 4 weeks ago. You changed where your task branch originated on the master. You moved its base.

    Atlassian does a fantastic writeup on this.

    • morrowind
      link
      fedilink
      arrow-up
      7
      arrow-down
      1
      ·
      8 months ago

      So kinda like as if you had kept your branch synced the whole time?

      • BlackPenguins@lemmy.world
        link
        fedilink
        arrow-up
        7
        ·
        edit-2
        8 months ago

        Kind of. Both merge and rebase result in the branches “synced up” but they do it in different ways.

        Merge is making a batter for cookies, having a bowl for dry ingredients (task branch) and a bowl for wet ingredients, (master branch) making them separately and then just dumping the dry bowl into the wet bowl (merge).

        Rebase is taking a time machine back to before you started mixing the dry ingredients, mix all the wet ingredients first then add the dry ones on top of that in the same bowl.

        It’s really hard to create an analogy for this.

    • Crow@lemmy.blahaj.zone
      link
      fedilink
      arrow-up
      1
      ·
      edit-2
      8 months ago

      So, with a merge you basically shuffle in the changes from both branches, but a rebase takes only the changes from one branch and puts it over the other? Edit: no. Read wrong. I should probably watch a vid about it or something