JIYIK CN >

Current Location:Home > Learning > OPERATING SYSTEM > Git >

Reverting a merge commit in Git

Author:JIYIK Last Updated:2025/03/31 Views:

Sometimes, we need to merge two or more branches and then push the commit to the desired branch. But later we realize that we don’t need the merge in that repository, so the question here is how to undo or revert the merge commit that has already been pushed. There is nothing to worry about. Git has a great solution for this problem which we will discuss below.

There are two ways to handle this situation, depending on the problem; one is that it has not been pushed to the repository but has been committed. The other is that it has been committed and pushed to the repository. Both cases are discussed below:


Undoing unpushed Git commits

It is not possible to revert a commit directly in Git. Nevertheless, we need to check the commit before reverting. After reverting, the location of the working directory is now the same as the location of the working directory before we pushed the commit.

We can now apply git resetthe command to move the index pointer back to where it was before the commit. For example, if we want to keep the changes from commits Commit1and Commite3, but revert Commit2the changes from commit , execute this command.

git reset HEAD~3

This command will return the index pointer to Commit2where it was before the commit. After reverting the commit, we need to add the changed files to the working directory again. For example, execute the following command:

git checkout Commit1 
git add Commit1  
git checkout Commit3 
git add Commit3
git commit

Afterwards, we can push commits Commit1and Commit3to the remote repository.

git push

If we want to merge two branches and then revert the changes from one branch, we can use the following command:

git merge --abort

This command is used to cancel the merge process. Afterwards, we can revert the changes to the branch. The commands discussed in this section are useful if we want to undo the effects of the last commit or multiple commits.

However, if we want to undo the effects of the last two or more commits, we need to reset the working directory to the state before the last commit. This is because it is not possible to directly revert one or more commits.


Reverting a pushed Git commit

In another case, if we have already pushed the merge commit to the remote branch and also pushed it, we have to make a new commit to revert the changes. We will execute the following command:

git revert -m 1 <merge-commit-hash>

This will develop a new commit that will reverse the changes of the previous merge commit. However, this new commit will also contain all the changes of the original merge commit, so we need to edit the commit message to indicate that this is a revert commit. The options we mentioned -m 1will tell Git that we want to keep the merged branch.

revert commandThe revert command does not alter the working tree. It only modifies the index. revert commandIt also has an option to restore the original message of the commit. In the example given above, -mthe revert option is used to restore the original message of the commit. The revert command can also be used to restore specific files from an integrated commit.

Git is a useful tool to use on our local branches when we make changes and decide that we no longer want to keep that change. revertIt is not recommended to use on public branches.

As we all know, git revert is completely reversible and it is impossible to undo its changes. If we perform git revert on a commit that is not the current commit on its branch, we have to be very careful because git revert will develop a new commit with a new commit ID.

If we later do a git reset --hard to revert the changes made by git revert, we will also remove the changes made by the developer who created the commit that git revert undoes. It is possible to use git revert on a public branch, but according to my opinion, it is not a good idea to do so. It is better to develop a new branch to make the changes and then merge it into masterthe branch when you are done.

If we want to use git revert on a public branch, make sure we are the only ones working on that branch, otherwise we will undo everyone else's work.

For reprinting, please send an email to 1244347461@qq.com for approval. After obtaining the author's consent, kindly include the source as a link.

Article URL:

Related Articles

Git installation and establishment of local warehouse service

Publish Date:2025/04/05 Views:89 Category:Git

Git is a distributed version control system: the client does not only extract the latest version of the file snapshot, but also completely mirrors the original code repository. It has the following advantages: a. Since every extraction oper

git remote operation——multiple remote repositories for one project

Publish Date:2025/04/05 Views:131 Category:Git

Multiple remote repositories for a git project In our git project, the command to operate the remote repository information is $ git remote # 查看当前所有的远程仓库的名称 $ git remote -v # 查看远程仓库的名称和远程仓

Git cherry pick command usage

Publish Date:2025/04/05 Views:190 Category:Git

git cherry-pick is a powerful command that allows us to select an arbitrary Git commit by reference and attach it to the HEAD of the current working branch. Cherry picking is the act of picking a commit from one branch and applying it to an

Comparison between Git merge and Git rebase

Publish Date:2025/04/05 Views:171 Category:Git

The git rebase command may seem like Git wizardry to beginners, but if used carefully, it can actually make life easier for your development team. In this article, we compare git rebase with the related git merge command and identify all th

How to fix Git error Error: src refspec master does not match any

Publish Date:2025/04/05 Views:124 Category:Git

When using Git, we may encounter the error "src refspace master does not match any". Here's what the error means and how to fix it. What does src refspec master does not match any Mean in Git mean? We may encounter this error when we try to

Undo Git Stash

Publish Date:2025/04/04 Views:187 Category:Git

This article explains how to make and save changes to a repository. Git allows you to save changes locally and push them to a server when needed. In Git, we don't use the term save , but commit . We use git add , git commit , and git stash

View a list of cache entries in Git

Publish Date:2025/04/04 Views:59 Category:Git

We often need to pause our work and focus on something else in our development environment. Therefore, we may need to temporarily save our current work and focus on a different one. We may want to resume our original work later. git stash T

Git stores specific files

Publish Date:2025/04/04 Views:115 Category:Git

This article will cover storing changes to only specific files in Git. In Git, when we make some changes in our working tree, we may have some changes which may or may not be staged in our local repo. We may now wish to save these changes f

Scan to Read All Tech Tutorials

Social Media
  • https://www.github.com/onmpw
  • qq:1244347461

Recommended

Tags

Scan the Code
Easier Access Tutorial