Add mirror repository syncing strategies for diverged branches

Zendesk issue: https://gitlab.zendesk.com/agent/tickets/14885

In cases where branches diverge from upstream, we should give the user the option to manually choose a strategy for updating. Currently, if a user mirrors a repo and then adds some commits to a branch (let's say master) then mirroring will stop syncing that branch because the changes can't be applied linearly. In this case, we should offer a UI that allows the user to choose a strategy - such as 'merge upstream' or 'discard/overwrite'.

Customer requested this feature and referenced the BitBucket implementation. https://confluence.atlassian.com/bitbucketserver/keeping-forks-synchronized-776639961.html

Edited by 🤖 GitLab Bot 🤖