Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Changing git commit message after push (given that no one pulled from remote)

Tags:

git

commit

push

I have made a git commit and subsequent push. I would like to change the commit message. If I understand correctly, this is not advisable because someone might have pulled from the remote repository before I make such changes. What if I know that no one has pulled?

Is there a way to do this?

like image 541
K_U Avatar asked Jan 24 '12 01:01

K_U


People also ask

Is it possible to change git commit message after push?

Changing the latest Git commit message If the message to be changed is for the latest commit to the repository, then the following commands are to be executed: git commit --amend -m "New message" git push --force repository-name branch-name.

Can we edit commit message in Gitlab?

open the commit list. click edit and reword all the commit messages in my branch that are in my branch.


2 Answers

Changing history

If it is the most recent commit, you can simply do this:

git commit --amend 

This brings up the editor with the last commit message and lets you edit the message. (You can use -m if you want to wipe out the old message and use a new one.)

Pushing

And then when you push, do this:

git push --force-with-lease <repository> <branch> 

Or you can use "+":

git push <repository> +<branch> 

Or you can use --force:

git push --force <repository> <branch> 

Be careful when using these commands.

  • If someone else pushed changes to the same branch, you probably want to avoid destroying those changes. The --force-with-lease option is the safest, because it will abort if there are any upstream changes (

  • If you don't specify the branch explicitly, Git will use the default push settings. If your default push setting is "matching", then you may destroy changes on several branches at the same time.

Pulling / fetching afterwards

Anyone who already pulled will now get an error message, and they will need to update (assuming they aren't making any changes themselves) by doing something like this:

git fetch origin git reset --hard origin/master # Loses local commits 

Be careful when using reset --hard. If you have changes to the branch, those changes will be destroyed.

A note about modifying history

The destroyed data is really just the old commit message, but --force doesn't know that, and will happily delete other data too. So think of --force as "I want to destroy data, and I know for sure what data is being destroyed." But when the destroyed data is committed, you can often recover old commits from the reflog—the data is actually orphaned instead of destroyed (although orphaned commits are periodically deleted).

If you don't think you're destroying data, then stay away from --force... bad things might happen.

This is why --force-with-lease is somewhat safer.

like image 52
Dietrich Epp Avatar answered Oct 13 '22 06:10

Dietrich Epp


Just say:

git commit --amend -m "New commit message" 

and then

git push --force 
like image 37
Manish Shrivastava Avatar answered Oct 13 '22 06:10

Manish Shrivastava