JIYIK CN >

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

Undo Git Stash Pop conflicts

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

You can undo this using the solutions in this article git stash pop with merge conflicts. We show you how to abort an erroneous stash pop operation and return to a clean state.

But we also demonstrated a git stash popway to resolve the conflict and undo the new good merge.


Git Stash Pop Merge Conflicts - The Problem

In a fast-paced developer workflow, it's common to hide the current state and jump to other features when new ideas come to mind.

When we finish working on a new feature, we git stash popapply the stashed changes using the command. But sometimes, this back-and-forth workflow leads to merge conflicts.

In this case, you might want to do one of two things.

  1. Abort a bad merge and return to a previous clean state.
  2. You may want to edit the files/directories locally or pull from the remote repository to resolve the merge conflicts. You can then merge the correct changes with a new commit.

Let’s look at both solutions.


Undo Git Stash Pop With Conflicts - Abort a bad merge to return to a clean state

If you want to remove changes from a bad stash pop operation, you should use any of the following commands. These methods will abort all changes that caused merge conflicts and return to a previous healthy state.

git reset --merge

First, let's look at the setup. We have a master branch with some files, like this:

master branch initial setup

Then we forked a local branch new_branch from it. We modified some files in this branch and committed these changes.

new branch initial setup

We now make some changes to file1.txt and file2.txt. Then we store these changes.

$ git stash -u -m "Modify file1 and file2 in new_branch"

git stashThere are a few options here. The -u flag lets us hide untracked changes.

The -m flag has the same meaning - it allows us to add semantic messages to our storage.

stash in new branch

Now, we make some changes to the same file1.txt and file2.txt in our master branch. These files have different versions in our master and new_branch.

modify files master after fork

If we apply stash in the master branch, the different versions of file1 and file2 will conflict.

git stash pop conflicts

If we check our repository now, we'll find strange files in it due to the bad merge attempt.

git stash pop conflicts weird behavior

We can use the reset command with some options to undo a failed stash pop.

$ git reset --merge

git resetRecently learned about the --merge option. The --merge option is similar to the default --mixed option, but it only applies to files affected by the merge operation.

In our case, we see the result of this command is git undo bad stash pop.

git reset merge

git checkout -f

We can see the same results as above using the command by passing the -f flag.git checkout

$ git checkout -f

Without any arguments, git checkoutthe command assumes the default HEAD argument. Our last commit was good, with no bad stash pop merge conflicts, so this command wipes the slate clean.

The -f flag is used for the --force option. It helps ensure a healthy repository state by ignoring unmerged commits and untracked files.

git checkout force option

If you just want to wipe the above two methods clean, it is best to undo git stash pop if there is a conflict.

But if you want to resolve the commit with a fresh good merge, you need to use the following approach.


Undo Git Stash Pop by resolving bad conflicts

You need to edit the files and directories nicely in sync across all branches to resolve conflicts.

You can do this locally with a few commands, or you can pull it in from a remote repository. We’ll look at both solutions.

Resolving Git Undo Failed Stash Pop conflicts - for local branches

We have the same setup as above. But this time, we will resolve the conflicts between main and new_branch and reapply our stash to get the desired result.

We start by removing the file changes that caused the stash pop conflict. The changes we made to file1 and file2 in master after we forked caused the problem.

We reset master to the commit before that one and made the wrong changes to our file1 and file2.

git reset <good_commit_hash>

git reset bad commit

git checkout HEAD .

We also rollback our work area using the checkout. command. Note the trailing dot , which selects all files to ensure that all conflicts are resolved.

You can also use:

$ git reset HEAD file1.txt file2.txt

Because in our example, we know that the two related files are file1.txt and file2.txt .

In this form, git checkoutthe command sets the working directory to align with HEAD, which is the last good commit without conflicts.

git checkout head

We now see that the commit has disappeared from our master branch.

Wrong commit vanished local settings

We have now successfully applied the stashed changes.

$ git stash pop

git good stash pop

successfully resolve apply stash

Git Undo Bad Stash Pop - Resolve conflicts by pulling from a remote repository

If your workflow is set up so that the remote repository is in the most unhealthy state possible, you can resolve bad repository conflicts by pulling in from the remote.

Let's first set up a concrete use case for this solution.

healthy remote

local master behind remote

We see that our local remote is behind our remote master by 1 commit. Suppose we now create a new local branch to track the remote master and store some changes in it.

$ git fetch --all

$ git switch -c new_branch_tracking_remote_master origin/master

local branch tracking remote master

We have some changes stored on this branch.

git stash -m "Change file5.txt in local branch"

stash local tracking remote master

Now we realize that we want to make these changes on a new local branch. We fork a new local branch from our local master .

git checkout master

git branch local_branch_2

new fork from local master

We see that this branch is 1 commit behind, and it does not have the file5.txt file. If we pop our stash now, it will result in a nasty merge conflict.

bad git pop remote workflow

To resolve the conflict, in this case we pull the remote master into our local master. We first need to fetch the remote repository.

$ git fetch --all

We then merged our local master with the remote master.

$ git merge origin/master

pull local master from remote

We now see that our local host is in sync with the remote host by pulling the latest changes. You can also see that the critical file5.txt is included.

updated local master

We will now rebase your local branch, local-branch2, on top of the updated local master.

First, check your local branch.

$ git checkout local_branch_2

Now, rebase on your local master branch.

$ git rebase master

This makes our local_branch_2 healthy and ready to receive stashed changes.

rebase local on master

We now apply our stashed changes.

$ git stash pop

This time we see that the stashed changes were successfully applied.

git stash pop success remote setup

We have resolved the conflict and merged the stashed changes successfully.

success git stash pop remote setup

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