From: Junio C Hamano Date: Wed, 14 Jan 2015 17:36:25 GMT Subject: Re: How to prevent empty git commit --amend Message-ID: In-Reply-To: Junio C Hamano writes: > Matthieu Moy writes: > >> Ivo Anjo 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+--} "$@"