• joby@programming.dev
    link
    fedilink
    arrow-up
    2
    ·
    1 year ago

    I’m guessing you don’t mean commits that actually bring updates from a different branch in? I’m responsible for a bunch of commits that catch my feature branch up to main and a couple that bring my branches into main.

    If we were working on the same project, what would you want to see for those? This is hosted on a private gh repo, but it’s a small shop and we were working on a tight deadline for an MVP release and were not using PRs for the stuff I was working on.

    The boss (co-owner of the business) is the Sr dev on the project and until recently was the only sr dev in the whole shop. I actually don’t think he has experience with using git in a team context.

    One of my other tasks is working on internal docs (which didn’t exist before I joined the team) that would include git best practices for branching strategies and commit messages, so I’m interested in what folks who have more experience than I do would like to see as I try to nudge the team practices.

    • Falmarri@lemmy.world
      link
      fedilink
      English
      arrow-up
      4
      ·
      1 year ago

      I’m guessing you don’t mean commits that actually bring updates from a different branch in?

      No, fast-forward merges only

    • Alien Nathan Edward@lemm.ee
      link
      fedilink
      arrow-up
      1
      ·
      1 year ago

      merge commits that catch my feature branches up to main

      You’d be squashing those when you merge back down into main anyway, no?

      • scubbo@lemmy.ml
        link
        fedilink
        arrow-up
        1
        ·
        1 year ago

        You’d hope so - and if one does, I have no concerns about whatever one chooses to do in the privacy of their own branch - but some people insist on directly merging to main (preserving two parallel histories), rather than squashing their change into a single commit. Savages ;)

    • scubbo@lemmy.ml
      link
      fedilink
      arrow-up
      1
      ·
      1 year ago

      I’m guessing you don’t mean commits that actually bring updates from a different branch in?

      Yep, in part, I do. Say I’m working on feature which branched off from main. Time’s gone by, and there have been commits on both feature and main. I want to integrate (not I am very carefully not using the word merge!) the commits that exist on main into my feature branch so that I can use them. You can make a merge commit to do so, but there’s no point in doing so - a git pull --rebase will have the same effect (“My local branch contains both the changes from the upstream, then the changes that I myself have made ‘on top of’ them”) without requiring a merge commit.

      But really, what one chooses to do in the privacy of one’s own branch is no concern of mine. I can advise and opine, but it doesn’t really affect me. What does affect me is when people insist on merging into main. That really irritates me, because it results in horrible tangled non-linear history like this. Ideally, the history of main should be a linear history of changes which each follow on from one another, and a commit and a change are in 1:1 correspondance:

      • the question “which commit is the parent of this one?” should have one answer, not potentially-multiple.
      • there is no value in seeing the development history of the change (all the random “bugfix”, “maybe this will work lol”, “correct typos” commits) in the history of main. They are maybe useful in the PR, but the change as seen in main should only contain the finished polished-up result.

      GitHub’s confusingly named “Squash And Merge” (it’s a “merge” in the git merge sense, but it doesn’t create a Merge Commit! “Squash and commit” or “Squash and push” would be more accurate) results, I think, in the outcome - a single commit on the HEAD of the target branch containing the result of the change. And if that happens, then I don’t care if you’ve been pulling in changes from main to feature via Merge commits or (correctly IMO) via git pull --rebase - because, whatever you’ve done, your development history will be (correctly) invisible from the commit on main.

      (I say “I think” there because I’ve only recently started using GitHub in a professional capacity. For the decade prior to this I worked at a Big Tech company which had its own in-house Code Review tools which - probably not by coincidence - aligned a lot more closely with how I think about how Git history should be structured)