Git Commit Creation

This is an article in which I explore the details and thinking that goes into how you should create git commits, and why. I like to think of it as the article I wish existed when I was just starting out over 20 years ago.

I wanted to cover all the things that you should think about at a high level. That way it at least could work as an entry point to deeper exploration of the particular areas if the reader isn’t completely sold or they want to just gain a deeper understanding. While at the same time trying to provide enough details to show why and how these choices are valuable. This is always a tricky balance.

Anyways, I would love any feedback on thoughts on how this could be improved.

Thanks

  • GuilhermePelayo@slrpnk.net
    link
    fedilink
    arrow-up
    5
    ·
    1 day ago

    Good analysis, there are a few things that I think area bit opinionated and there is nothing wrong with that, I just don’t agree with a few things out of context. For example I agree that code on main should be buildable and testable. Code in your own branch should be for yourself and should still have commits. Also lazygit really abstracts a huge chunk of git logic while making it easier to understand.

    • leds@feddit.dk
      link
      fedilink
      arrow-up
      2
      ·
      1 day ago

      Yeah a pull request should be formatted corectly, build, documented, pass all tests and have changes covered in tests.

      Your own branch? Do whatever you want, will get squashed anyway in the pull request.

  • sorter_plainview@lemmy.today
    link
    fedilink
    arrow-up
    3
    ·
    1 day ago

    So this bit confuses me. The article says in the intent and scope section that the entire process of bug fixing, in the included example, is literal bug fixing, clean up toggle, correct lints, correct duplication. That point to linting issues.

    The earlier section says that a commit should be ‘buildable’ and ‘testable’. So if there are linting issues, the commit won’t satisfy this criteria right?

    What am I missing here?