A development team is working on a web application hosted on AWS. The team uses AWS CodeCommit as their version control system and follows a standard naming convention for branches, where 'main' is used for production, 'develop' for staging, and feature branches are created off 'develop' for new features. They decide to work on a new feature and want to ensure it goes through proper testing in staging before being merged into 'main' for production. Which of the following branching strategies should the development team follow to best adhere to their workflow and ensure that the new feature is properly tested and reviewed before deploying to production?
Merge the new feature code directly into 'main' from the developer's local machine.
Create a feature branch off another existing feature branch to work on the new functionality.
Create a new feature branch from 'develop', commit changes to this branch, and upon completion, merge back into 'develop' for staging.
Branch off from 'main', work on the new feature, and then merge back into 'main' when testing is concluded.