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

Re: How to prevent empty git commit --amend

From
Junio C Hamano <gitster@pobox.com>
Date
Jan 14, 2015, 17:36 UTC
Message-ID
<xmqq387db6xy.fsf@gitster.dls.corp.google.com>
In-Reply-To
<xmqqfvbdb7dc.fsf@gitster.dls.corp.google.com>
Junio C Hamano <gitster@pobox.com> writes:
Show 24 quoted lines
> Matthieu Moy <Matthieu.Moy@grenoble-inp.fr> writes:
>
>> Ivo Anjo <ivo.anjo@ist.utl.pt> writes:
>>
>>> Is there a way to prevent a *git commit --amend** with nothing to
>>> commit from working?
>>> If not, I would like to suggest that this feature would be very helpful :)
>>
>> I don't know any way to let Git do the check for you, but 
>>
>> git diff --staged --quiet || git commit --amend
>>
>> should do it. You can alias it like
>>
>> [alias]
>> 	amend = !git diff --staged --quiet || git commit --amend
>>
>> and then use "git amend".
>
> That would not let you say "git amend Makefile", no?
>
> 	!sh -c 'git diff --cached --quiet "$@" || git commit --amend "$@"' -
>
> or something, perhaps?
Heh, not that but something like that ;-).
 * If we have pathspec, we would want to see if the HEAD and the
   working tree differ at the given paths;
 * Otherwise we would want to see if the HEAD and the index differ.
So it would be more like this, I guess.
	case "$#" in
        0)	git diff --quiet --cached ;;
        *)	git diff --quiet HEAD -- "$@" ;;
	esac || git commit --amend ${1+--} "$@"
Previous: Junio C HamanoNext: Michael J Gruber
Message 9 of 30 in “How to prevent empty git commit --amend”
  1. Ivo AnjoJan 13, 2015
  2. Daniel Knittl-FrankJan 13, 2015
  3. Ivo AnjoJan 13, 2015
  4. Michael J GruberJan 13, 2015
  5. Matthieu MoyJan 14, 2015
  6. Ivo AnjoJan 14, 2015
  7. Matthieu MoyJan 14, 2015
  8. Junio C HamanoJan 14, 2015
  9. Junio C HamanoJan 14, 2015
  10. commit/status: show the index-worktree with -v -vMichael J Gruber, Jan 15, 2015
  11. Junio C HamanoJan 15, 2015
  12. Junio C HamanoJan 15, 2015
  13. Michael J GruberJan 16, 2015
  14. 0/2 More diffs for commit/statusMichael J Gruber, Mar 3, 2015
  15. 1/2 t7508: test git status -vMichael J Gruber, Mar 3, 2015
  16. Junio C HamanoMar 3, 2015
  17. Junio C HamanoMar 3, 2015
  18. Michael J GruberMar 4, 2015
  19. Junio C HamanoMar 4, 2015
  20. 2/2 commit/status: show the index-worktree diff with -v -vMichael J Gruber, Mar 3, 2015
  21. Junio C HamanoMar 3, 2015
  22. Michael J GruberMar 4, 2015
  23. Junio C HamanoMar 4, 2015
  24. 0/3 More diffs for commit/statusMichael J Gruber, Mar 5, 2015
  25. Junio C HamanoMar 5, 2015
  26. Junio C HamanoMar 5, 2015
  27. Junio C HamanoMar 5, 2015
  28. 1/3 t7508: .gitignore 'expect' and 'output' filesMichael J Gruber, Mar 5, 2015
  29. 2/3 t7508: test git status -vMichael J Gruber, Mar 5, 2015
  30. 3/3 commit/status: show the index-worktree diff with -v -vMichael J Gruber, Mar 5, 2015

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.