Just a git technique that is sometimes useful. Mostly when the starting branch changes a lot, due to for example a rebase, but can be other reasons too.
You should start with a git fetch
, just to have up to date origin/*.
After this, or before, you need to collect the list of commit hashes that contain the changes you made in your branch. Here’s an example.

In this case, branch RNL-4106 added 2 commits on top of RNL-4048. We ignore the merge commit – hopefully it did not have any actual changes and was a straight merge.
Then with those commit hashes obtained, we can reset the branch to the current state of the source branch with git reset --hard origin/RNL-4048
, then add back the 2 commits with git cherry-pick 36b98cae2cb970c19713cc9900f03114fa4d25a4 5687fb0366dfef9676622e99da266f77818745a1
( note that it is in the chronological order in which the commits themselves were made )
There may be conflicts, and you’d have to resolve them for each cherry-picked commit at a time. Once you have resolved one commit’s conflicts, you run git add . && git cherry-pick --continue
.
After all the commits have been cherry-picked, you run git push -f
because you’ve “re-written git history”, and that requires a force push.
Hope That Helps!