Some ideas i have lately thought about related to Branching.
If you have several branches and features in development, then how to minimize and optimize the complexity of merging between those branches. It is subjective, but i think there are best practices. Like merge as often as possible - which direction and why. IF you have Dev branch and two Features, then its important to merge from Dev to Feature as often as possible if the Dev branch changes, to minimize the complexity of merging back to dev later. And the other way around i guess, although sometimes the features cannot be merged to DEV unless they are complete.
There are also best practices in merging/checkin of changes. Should be refactoring only and no logic changes at the same time. Things have to be in steps to avoid the complexity of merging between branches and checking into branches.
I guess these dont fully qualify as advanced branching techniques, but they are valuable tips and eareas where these tips matter.
Also Branching related to release management. I think it needs way more explanation on how to use the branches for releasing multiple versions of products while servicing them as well.