Add a GitData.pull method
Improve error reporting if push fails and release lock if a push fails during a merge