How to amend a commit without changing commit message (reusing the previous one)?

Solution 1:

Since git 1.7.9 version you can also use git commit --amend --no-edit to get your result.

Note that this will not include metadata from the other commit such as the timestamp which may or may not be important to you.

Solution 2:

git commit -C HEAD --amend will do what you want. The -C option takes the metadata from another commit.

Solution 3:

Another (silly) possibility is to git commit --amend <<< :wq if you've got vi(m) as $EDITOR.

Solution 4:

To extend on the accepted answer, you can also do:

git commit --amend --no-edit -a

to add the currently changed files.

Solution 5:

You can save an alias that uses the accepted answer so it can be used like this:

git oops will add everything, and amend using the same message

git oops -m "new message" will amend replacing the message


This is the alias

 oops = "!f(){ \
    git add -A; \
    if [ \"$1\" == '' ]; then \
        git commit --amend --no-edit; \
    else \
        git commit --amend \"$@\"; \
    fi;\
}; f"