How do I merge my local uncommitted changes into another Git branch?
branch, git
Solution
Since your files are not yet committed in `branch1`:
git stash
git checkout branch2
git stash pop
or
git stash
git checkout branch2
git stash list # to check the various stash made in different branch
git stash apply x # to select the right one
Above is the longer more explicit version of rbento's answer:
git stash
git stash branch branch2
It uses:
`git stash branch <branchname> [<stash>] `
- Creates and checks out a new branch named `<branchname>` starting from the commit at which the `<stash>` was originally created,
- applies the changes recorded in `<stash>` to the new working tree and index.
If that succeeds, and `<stash>` is a reference of the form `stash@{<revision>}`, it then drops the `<stash>`.
This is useful if the branch on which you ran `git stash push` has changed enough that `git stash apply` fails due to conflicts. Since the stash entry is applied on top of the commit that was HEAD at the time `git stash` was run, it restores the originally stashed state with no conflicts.
As commented by benjohn (see `git stash` man page):
To also stash currently untracked (newly added) files, add the argument `-u`, so:
git stash -u
Problem
How can I do the following in Git? My current branch is branch1 and I have made some local changes. However, I now realize that I actually meant to be applying these changes to branch2. Is there a way to apply/merge these changes so that they become local changes on branch2 without committing them on branch1?
Related problems
- How do I check out a remote Git branch?
- How do I undo the most recent local commits in Git?
- How to commit my current changes to a different branch in Git
- Move existing, uncommitted work to a new branch in Git
- What's the difference between HEAD, working tree and index, in Git?
- Git for beginners: The definitive practical guide
- How to resolve git stash conflict without commit?