No problem. Git sometimes could be quite confuse, been there myself.
git checkout upstream/4.16 This checks out files to your working directory. (**git fetch upstream ** downloads all the code and history from upstream repository)
git checkout -b my_4.16 Yes, this creates a new branch : my_4.16
git cherry-pick ??? You are right, ??? should be the commit number you like to merge into your my_4.16 branch.
When you changed engine files in your local 4.15 branch, you should add and commit what you changed to your own 4.15 branch: