Push specific changes (defect fix) and not feature changes I am new to DevOps. I am using Jenkins and GitHub for salesforce deployment.

Setup

We have a develop branch. Feature branches are created out of it. When merged to develop, the deployment to the first Salesforce sandbox happens. After end of every sprint the develop branch is merged with SIT branch pushing changes to SIT Sandbox.

Problem Statement

The QA happens in the 1st sandbox for sprint 2. QA also takes place in SIT Sandbox for sprint n-1 features.


If an issue is found in the SIT sandbox as part of sprint n-1 testing, the bug is fixed in the develop Sandbox


a defect feature branch is created from develop. 
A fix is added to it. 
The branch is merged to develop, fix deployed to 1st Sandbox and tested. 

If it passes QA, the defect feature branch needs to be  merged with the SIT branch to deploy the fix to the SIT sandbox and testing resumes.


Issue

Only the fix needs to be pushed to SIT before the sprint is over and not user story code from sprint 2. But if the fix is made to an apex class or object file, everything is deployed.

How would one separate the user story code from sprint 2 and defect fix code for sprint n-1 testing when merging to SIT branch?
This sounds like a problem for git cherry-pick. If you can separate the user story code from the fix code, by committing them separately, you can cherry pick the relevant commit to merge back into the develop branch.

See https://stackoverflow.com/questions/9339429/what-does-cherry-picking-a-commit-with-git-mean