问题
I was accidentally working on the wrong branch. Now I want to transfer all my changes to the correct branch.
If I stash the changes and apply them on the correct branch, will it only add the uncommitted changes to the correct branch or every change/commit from the wrong branch that doesn't exist on the correct branch?
For example
Wrong branch has:
Commit a
Uncommitted Changes b
Correct branch has
- Commit c
If I do git stash on the wrong branch and git apply stash in the correct branch, will it transfer commit a to the correct branch?
回答1:
I would do one stash, then reset (mixed so you don't lose the changes) the a commit, stash that, then change to the correct branch and pop both stashes.
git stash save "b"
git reset HEAD~
git stash save "a"
git checkout correct-branch
git stash pop
git commit -m "a"
git stash pop
回答2:
If your branch doesn't exist yet:
- git stash branch "new_branch"
if it does:
- git stash branch "temp_new_branch"
- git add "your changes"
- git commit
- git checkout "your desired branch to apply stash"
- git merge "temp_new_branch"
- git push
- git branch -d "temp_new_branch"
回答3:
Workaround
- Make a commit with those desired changes.
- Checkout to the branch you want those changes to be on.
- From that branch
git cherry-pick 23h123kjb
(<-- replace this hash with the one found in agit log
specific to the commit you want to bring in) - Profit!
回答4:
No it won't. Commits are not put in the Stash. I also sometimes just switch branches with my changes uncommitted and unstashed and it also works (not sure if in every case, though).
回答5:
What you can also do:
- Create a patch on the 'wrong' branch.
- Discard the changes
- Switch to the correct branch
- Apply the patch on that branch
来源:https://stackoverflow.com/questions/37417792/apply-stash-to-different-branch