How to move the changes from one branch to another branch git?

If the changes are not commited.

you can stash the changes in the master branch .

git stash

then checkout the branch

git checkout -b newbranchname

and pop the changes here

git stash pop

If the changes are commited :

then create a branch :

git checkout -b newbranch

checkout back to master branch:

git checkout master

reset to previous commit :

git reset --hard head^1

You can create a new branch pointing to the current commit using git branch branchname (or git checkout -b branchname if you want to check it out directly). This will basically duplicate your master branch, so you can continue working on there.

If you have successfully copied the branch, you can reset master to its original point by using git reset --hard commit where commit is the hash of the commit that should be the last one on master.

So for example you have a situation like this:

---- 1 ---- 2 ---- 3 ---- 4 ---- 5 ---- 6
                   ^                    ^
              original                master
            master commit

So you have checked out master on commit 6, and you want to create a new branch ticket pointing to that 6 while resetting master to 3:

git branch ticket
git reset --hard 3
git checkout ticket

And then you’re on ticket pointing to commit 6, while master points to 3.


If you have commit (say) 2 times after you realised you should have been in a branch then simply do

git branch work_branch
git reset --hard HEAD~2

replace the 2 with the number of commits back you want to go. You'll still be on master at this point, if you want to move to the branch to continue work, just git checkout work_branch

see git rev-parse --help if you want to understand the syntax for how to traverse back up your commit tree with references like HEAD~2


I resolved this problem by the following approach

Step 1: Create a new branch from the infected master branch and named it something like that master_infected ;

Step 2: now hard reset the infected master branch for removing the polluted commits by

 git reset --hard HEAD~2  
    

(going back two commits before HEAD because for my case I have that two polluted commits. so for your case it may be different )

Now my master_infected branch is containing whose code which I want to preserve (As I said my polluted code) and the master branch is now in a save mode.


Create a new branch from where you should have, and then cherry pick the changes on the incorrect branch into the new branch.

You can then delete the bad branch, assuming you haven't pushed it elsewhere and other changes have been made against it.