git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: why does "git revert" commit even if i try to bail with ":q!"?

From
Kevin Daudt <me@ikke.info>
Date
Mar 12, 2019, 18:14 UTC
Message-ID
<20190312181428.GA6993@alpha>
In-Reply-To
<alpine.LFD.2.21.1903121317020.16391@localhost.localdomain>
On Tue, Mar 12, 2019 at 01:22:51PM -0400, Robert P. J. Day wrote:
Show 40 quoted lines
> 
>   never noticed this before ... when i do a regular "git commit" and
> enter my "vi" edit session and change my mind, i can bail with ":q!",
> regardless of what i've set up as a commit message, and i'll see:
> 
>   Aborting commit due to empty commit message.
> 
> however, i was just playing with "git revert" and, after i ran:
> 
>   $ git revert <commit SHA>
> 
> i was dumped into another vi edit session:
> 
> Revert "HTTP->HTTPS"
> 
> This reverts commit 2965b41fd84a1a76f56984ecdf6c123d1992730f.
> 
> # Please enter the commit message for your changes. Lines starting
> # with '#' will be ignored, and an empty message aborts the commit.
> #
> # On branch master
> # Your branch is up to date with 'rpjday/master'.
> #
> # Changes to be committed:
> #       modified:   book/01-introduction/sections/installing.asc
> #
> 
>   again, simulating that i changed my mind, i just typed ":q!", but
> the revert went ahead, anyway. i tried again, this time completely
> deleting all the lines from the commit msg (as the template
> suggested), but the revert *still* completed after typing ":q!".
> 
>   it was only after deleting all the lines and using ":wq" that the
> revert was cancelled:
> 
>   Aborting commit due to empty commit message.
> 
> that seems ... inconsistent. am i misunderstanding something?
> 
> rday

The only reason why `:q!` works just for comitting is because there is no default message, so the final message ends up empty.

When you do things like git revert or git ocmmit --amend, there is already a commit message, which you are then editing. When you quit without saving, the existing message remains and git uses that.

vim has a command to let it exit with an error return code: `:cq`. This makes git something went wrong with editing the message, causing git to abort the commit.

Previous: Bryan TurnerNext: Robert P. J. Day
Message 9 of 11 in “why does "git revert" commit even if i try to bail with ":q!"?”
  1. Robert P. J. DayMar 12, 2019
  2. Bryan TurnerMar 12, 2019
  3. Robert P. J. DayMar 12, 2019
  4. Bryan TurnerMar 12, 2019
  5. Robert P. J. DayMar 12, 2019
  6. Robert P. J. DayMar 12, 2019
  7. SZEDER GáborMar 12, 2019
  8. Bryan TurnerMar 12, 2019
  9. Kevin DaudtMar 12, 2019
  10. Robert P. J. DayMar 12, 2019
  11. Elijah NewrenMar 12, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.