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?

Original source

Related problems