The most typical development cycle using a Version Control System (VCS) can be summarized as follows:
- Start a new branch: This allows you to work on a new feature or fix without affecting the main codebase.
- Commit every functional version of the new feature as it is developed: Regular commits help to keep the version history clear and maintainable.
- Send a pull request to the team: Once the feature is ready, create a pull request to notify the team that changes are ready for review.
- Merge new features into the project: After approval and any necessary changes, merge the feature branch back into the main branch.
This aligns with the second option in your original question:
Start a new branch, commit every functional version of the new feature as it is developed, send a pull request to the team and merge new features into the project.