A1. You should reset and push -f.
Now situation.
A - B - C - D ← HEAD and wrong commit
You should rollback HEAD.
git reset --hard HEAD~1
now
A - B - C ← HEAD
finally, you should force push to your remote repository.
git push origin your_branch -f
A2. use cherry-pick
Now situation.
need to copy |---------| A - B - C - D - E← old branch \ F - G - H ← new branch
use cherry-pick on your new branch
git cherry-pick <C commit hash> git cherry-pick <D commit hash> git cherry-pick <E commit hash>
now
A - B - C - D - E← old branch \ F - G - H - C' - D' - E'← new branch