Whenever I do a git revert I go into an edit session with the following pre-filled.
Revert "wip: does this work?"
This reverts commit ad21a2ae23166b3f3cddoooooooom94821e3cdb4.
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
...
…and so on.
I like to use conventional commits, so I change this to revert: "wip: does this work?".
Is there a way to get the initial template for the revert commit message to appear this way by default? Lowercase, and with a colon.
UPDATE This is what I came up with
#!/bin/bash
COMMIT_MSG_FILE=$1
old_subject_line=$(head -1 $COMMIT_MSG_FILE)
# Not a revert
if [[ ! "$old_subject_line" =~ ^Revert\ \" ]]
then
exit 0
fi
new_subject_line=$(echo $old_subject_line|sed 's/^Revert/revert:/')
sed -i "1s/.*/$new_subject_line/" $COMMIT_MSG_FILE
Curiously, the case where two “Reverts” in a row become a “Reapply” doesn’t come up like I thought it would. Maybe it only happens if you use the default Revert "yada yada yada" subject line.
Thanks for the 2am nerd snipe :D
You can do this via git hooks and a script. Specifically the prepare-commit-msg hook (
.git/hooks/prepare-commit-msg). In your script, check for the GIT_REFLOG_ACTION env variable, and check if its value is “revert”. If so, you are in a revert, and you can echo/printf out whatever you would like in your template.Might be a bit more work to get to where you want, but hopefully that points you in the right direction?
Updated OP with what I came up with. I wasn’t able to make use of
$GIT_REFLOG_ACTION– for some reason it was blank in every case, but reading the first line of the existing commit message, if it exists, does the trick.I do foresee a potential problem if you’re doing like an interactive rebase for example, and you go to edit a commit message that starts like the default "Revert " style–that could be surprising… Maybe some other cases I haven’t thought of too, but yeah, works for me. Thanks for pointing me in the right direction!
Thanks that is a great start, and even better gives me an excuse to faff about with scripting. I’ll share what I come up with!
EDIT Oh interesting, in my debugging I found out that if you revert a revert now (git version 2.43.0) that the subject line reads “Reapply” instead of “Revert “Revert “…”””
And yeah I made an account just to ask this question. Hello! Nice looking server you’ve got here. 🖐

