I have decided to work with multiple branches (Art, mechanics, packages etc.) on SourceTree but I noticed that Unity reloads everytime I switch between branches and I can't access a prefab from another branch. Is my approach with branches wrong ?
When you switch branches, you are switching the contents of your Unity project. The reason you can't access the prefab from the second branch, is because it doesn't exist on that branch.
When you change the contents of a Unity project externally (such as via git), Unity reloads the changed assets.
Atlassian does a good job of explaining how git branches work: https://www.atlassian.com/git/tutorials/using-branches