• yogo
    link
    fedilink
    arrow-up
    12
    arrow-down
    2
    ·
    11 months ago

    That’s called rebasing

    • atyaz@reddthat.com
      link
      fedilink
      arrow-up
      6
      arrow-down
      1
      ·
      11 months ago

      That is absolutely not what rebasing does. Rebasing rewrites the commit history, cherry picking commits then doing a normal merge does not rewrite any history.

      • yogo
        link
        fedilink
        arrow-up
        9
        ·
        edit-2
        11 months ago

        I’m sorry but that’s incorrect. “Rewriting the commit history” is not possible in git, since commits are immutable. What rebase actually does is reapply each commit between upstream and head on top of upstream, and then reset the current branch to the last commit applied (This is by default, assuming no interactive rebase and other advanced uses). But don’t take my word for it, just read the manual. https://git-scm.com/docs/git-rebase

        • atyaz@reddthat.com
          link
          fedilink
          arrow-up
          2
          arrow-down
          1
          ·
          11 months ago

          “Reapply” is rewriting it on the other branch. The branch you are rebasing to now has a one or multiple commits that do not represent real history. Only the very last commit on the branch is actually what the user rebasing has on their computer.

          • yogo
            link
            fedilink
            arrow-up
            2
            ·
            11 months ago

            Cherry picking also rewrites the commits. This is equivalent to rebasing:

            git branch -f orig_head
            git reset target
            git cherry-pick ..orig_head
            
      • yogo
        link
        fedilink
        arrow-up
        3
        ·
        11 months ago

        Have you tried interactive rebase (rebase -i)? I find it very useful

        • Throwaway
          link
          fedilink
          arrow-up
          1
          arrow-down
          1
          ·
          11 months ago

          Yeah, but then you deal with merge conflicts

          • gedhrel@lemmy.ml
            link
            fedilink
            arrow-up
            2
            ·
            11 months ago

            rerere is a lifesaver here.

            (I’m also a fan of rebasing; but I also like to land commits that perform a logical and separable chunk of work, because I like history to have decent narrative flow.)