Fetch and merge

We refactored the git related code:

* Now we only push the user's branch (instead of all)
* If a conflict is detected, pull the remote branch before trying to push again (instead of erasing the remote branch with the local one)
* In case of conflict, we keep the most recent file
 
I have manually test this branch and it seems to fix the progression loss bugs but please test it too before merging.