not 100% sure, but repo sync should/can revert your source tree to the upstream one...
just test (it is safe, as you have strarted your own branches, hope you have commit your changes through...)
then say for example you have made changes to device/motorola/sholest ...
after repo sync just go there and examine with
if your changes are there.. if not you can
git checkout yourbranch
git merge upstream/branch (for example git merge github/ics)
After you've done "repo start XT711 --all" then repo will automatically do a "git rebase" to all your changes after "repo sync". This means that changes you made to the older version are automatically converted into changes made to the current version.
"git rebase" is different from a "git pull" -- git pull fetches and merges changes from upstream to the end of your commits so your commits get mixed in with the changes upstream. "git rebase" instead reorders your changes and rewrites them so that your local commits and modifications are always last. This is what you want 99.9995% of the time and it's great that repo does this automatically. But it only does this if you tell repo that you're working in those directories (that's what repo start does). In fact, you can't even do a git commit to repositories unless you repo start them because they don't have the branches setup (don't set them up yourself using git commands--very bad idea--use repo start).
If you don't do "repo start" repo assumes that changes in those repositories are accidental file corruption that needs to be repaired. *This* is the case where repo will delete your changes.
If you want to go back to no changes, you can do a "repo abandon" (not sure if --all works there or not) and then if you're really paranoid delete all the directories and files *except* for .repo and then run repo sync and you will get a pristine checkout.