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!