According to Johannes Kilian, "the staging area is a container where git collects all changes which will be part of the next commit". Inside bitbucket, when you staging the file, you put the uncommited file into the staging area. "The next git commit will transfer all items from staging into your repository".
When you have multiple bugs to be fixed, you don't want to commit all your changes, you select the code you want to commit and do staging them. Through this way you will have a clean commit specific for one bug.
You can choose complete files, hunks (part of one file), or single line for staging.
https://community.atlassian.com/t5/Sourcetree-questions/Staged-vs-Unstaged/qaq-p/127916