The general answer is: yes, rebase will squash your duplicate commits. Specifically, it will drop the cherry-picked commits, if the same commit exists in the staging branch.
However, I'd suggest to rebase your develop branch, and after that merge it to staging, i.e.
git checkout develop
git rebase staging
git checkout staging
git merge develop
It's better practice to rebase the branched off branches instead of the main branches.
I partially agree with @MicroVirus' comment above, but I think this is only important for the main branches (mostly master, in your case staging, ...), which should be stable and not change its history, as other people may already have cloned and checked them out and most importantly, base their work off them.
For feature or development branches, which are work in progress anyway, it's ok to change the history.
EDIT
Sidenote: In general it's a better workflow to regularly rebase your develop branch to staging if you need newer commits from the staging branch instead of cherry-picking.