Hey fellow programmers, I wanted to share a little experiment I’ve been
conducting lately that has significantly improved my workflow. I’ve started
using AI to generate my Git commit messages, and it’s been a game-changer! By
feeding all the changes I’ve made into a language model with a large conte...
It writes more informative commits than I could ever make so I'm just reading what it says and mostly copy/pasting completely most of the time, I write all of the changes I've made into an LLM with a large context window and it write a very detailed commit not just with a title but with bullet points describing each of the changes precisely
If a glorified autocomplete algorithm can write more informative and concise commit messages than you, the actual author behind the code, I think you need to sit down and think long and hard what that actually implies.
That an AI might be better at writing documentation than the average dev, who is largely inept at writing good documentation?
Understandably, as technical writing isn't exactly a focus point or career growing thing for most devs. If it was, we would be writing much better code as well.
I've seen my peers work, they could use something like this. I'd welcome it.
You realize you don't need to list all your changes in the commit message, right? Anyone can blame or diff said changes.
The commit message is meant to be used for the high level stuff, the intent, representing / connecting progress towards a larger work item, and other important context from outside the codebase. Insert other reasons that aren't saying literally what was changed if you feel I have missed something.
Also one should use their time better if they are spending so much time writing commit messages they feel the need to automate it. Commit messages are rarely read ever again (once merged, lets say), it is not okay to be spending a lot of time on them. That's not an excuse to write bad commit messages, but you have to balance the time cost with expected utility.
And an addendum to the above. Describing what you did without reasoning, context, or other information that isnt captured within the changes itself makes your commit messages entirely useless. It makes IDE-inserted in-line blame information useless as well. Thus you are now wasting all the time you spend on commit messages, even if you spend less because it's automated.
Yeah, good commit messages are about intent and context of a change - not what the change itself is. We can look at the diff for that. Just write a single line or two summarizing what the commit does, and everything else should be adding context on top that doesn't directly exist in the codebase.
y’all need to speak for your own companies. obviously some companies will not allow it, and I’d be personally skeptical of allowing it if I ran a company - but I also work at a place that effectively has given a quiet go-ahead to use it, with objectively talented engineers regularly making use of LLMs for boilerplate and other aspects of work.
obviously, there’s some calculus on when to use it, and you better damn inspect your outputs, but treating as a blanket rule that OP is a terrible employee at their company when you don’t know the company is rude as hell and uncalled for.
Precision > concision && accuracy > concision. Just use your own wording as the commit message. I'd rather see an account of a code change from the viewpoint of the change's author than a shorter reformulation, even if that reformulation did come from a human who knew the problem space and wasn't prone to making shit up on the fly.
Of course he knows why he made the changes. He made them. But computers are much faster as typing and with a sophisticated enough LLM you can offload some gruntwork. I'd argue if you're not utilizing all the tools at your disposal, you're not performing like you should.
we are talking about programmers/software developers. Speed typing is in our nature. If you can't type 50 characters faster than writing the prompt to get the LLM to spat out a commit meesage, then I will question your competence.
Also the opposite is true, when the Boss realise that major parts or grunt work as you say can be automated by utilising LLM, then they would be inclined to employ that and reduce your wage. Because do you really deserve 6 figures when a computer can do the grunt work for their expensive human resources?
Why do you need to spend a "considerable amount of time crafting commit messages?" That feeding your code into an LLM and getting it to summarise for you is faster? I don't understand how this could possibly streamline anyone's workflow? What do your commit messages normally look like?
Strong disagree. Commit messages that are only one sentence long should be reserved for truly trivial things.
Signed, someone who regularly comes back to 18+ year old commits and enjoys the valuable details that would have been lost.
If you were on my team and I knew you were doing this, aside from all the other issues everybody else has mentioned in this thread, I'd be going out of my way not just to check every single one of your git commits (both code changes and commit messages) for inaccuracies but also also to find every possible reason to nit pick everything you committed.
You shouldn't be using LLMs to write your git commits (messages or code changes.) They hallucinate. But if you are going to use them, you need to spend much more time proofreading what they output than you'd spend writing it yourself. Check every single word for errors. (And, honestly, make the text fit with the way other commits by your team read (assuming you are on a team).)
In short, if you're going to use LLMs, DO NOT TRUST ANYTHING THEY GIVE YOU. And don't be surprised if you get negative blowback from others for using them at all. Keep in mind what can happen if you trust LLMs.
IMHO, the provided link is largely irrelevant to this topic. It is about lawyers who used ChatGPT as a search enginehttps://youtu.be/oqSYljRYDEM?t=1436, which is not what it is for, and it will tell you that over and over again. The lawyers in question were not even "trusting ChatGPT". They blatantly and actively disregarded ChatGPT telling them that it was not a search engine and could not provide legal advice https://youtu.be/oqSYljRYDEM?t=1466
This topic is about using LLMs to generate natural language describing code changes that it is provided with which is not only completely different than using an LLM as a defacto search engine, but it is also something LLMs are actually meant to do: autocomplete. This topic is more akin to using LLMs to write title headings for legal documents which are already basically complete as is than it is akin to the link provided.
Im shocked at all the negativity, this seems like an obvious good usecase to me, and I'm someone who finds most AI predictive stuff useless.
I never take more than 3 sec on my commit messages, most of them are "fix bug", "update lib", "bump". So it's a pretty low bar for it to make better messages than mine.
I make really small and really frequent commits. Like I'll commit all changes every 10 min regardless of if a feature is done or not, and basically use commits like an undo button.
I still use git history a lot (per file history usually) but even when browsing years and hundreds of commits into the past, I don't really need detailed/thoughtful messages to find the change I'm looking for. Binary search plus those 2 or 3 word message hints are lightning fast. And the number of times I commit vastly outweighs the number of times I browse the history.
When it comes to documentation and other people, feature-branches are my "OK I fully finished this thing; here's a summary". I'm also not afraid to squash a ton of useless commits together right before making a PR.
TDLR; spending more than 3 sec doesn't help future me or current me, so it's a waste of time
So what I get from this is that some people need to be forced to write decent commit messages.
Echoing what others have mentioned, commit messages need to document why something was changed and put it into the context of the project. You should do this even for private projects, just so 1) you build good habits and 2) if you let the project rest for a while you don't need to figure put everything from the start again.
it’d be interesting to see some examples of what your script came up with - I’m a bit skeptical of what an AI would come up with in terms of a commit message, and I’d think you’d need a pretty complex system to get commit messages to be maximally useful. I’ve found LLMs can stray towards being too high level and struggle if you ask more specific questions.
but I could also see it as being helpful for a sort of audit log for what changed, and I don’t think it would be too harmful, as long as you’re checking what the LLM is generating and making sure there’s corresponding code changes, that it’s not hallucinating etc.
hard to tell without examples - perhaps you could expand your post with some?
an aside, sorry you got such an overwhelmingly toxic response. the amount of angry people on this platform who feel the need to morally educate everyone around them objectively sucks and makes it a really unpleasant place to be.
Okay, so to be honest, at first, I didn't understand all the ❌negativity, but I shared this with a friend to get her take on the issue, and she 🕵️♀️clued me into the fact that webpack already does this with copilot and pull requests, and the results . . . speak for themselves.
Wow😅. I didn't think it would be that bad. It seems that every example I find is just incorrect. I'll look at the code. It will be a two line change, but the summary will be difficult to follow and often says things that are not part of the code changes. Then, there are also contradictions which make the pull requests harder to follow than if you just read the code with no other context. Darn it. I really thought this was a 🧊cool idea.
I'm definitely going to be sticking to writing my own commits as always.