I though the tracking is only work with pull not push? correct me if I'm wrong.

When you track a remote branch, you can run command "git pull" and it knows which remote branch to pull from.

When it comes to push, I don't think you can do this "git push" or "git push origin" or "git push origin/trackbranch"