diff --git a/product/ERP5VCS/Git.py b/product/ERP5VCS/Git.py
index af9566516647d1c26b564c286035b4a46232292c..00fa226b62ef2ed2855f2e9e3f4101e7528d41eb 100644
--- a/product/ERP5VCS/Git.py
+++ b/product/ERP5VCS/Git.py
@@ -352,8 +352,10 @@ class Git(WorkingCopy):
             reset += 1
           # retry to push everything
           self.remote_git(*push_args)
-    except GitError, e:
+    except (GitError, GitLoginError), e:
       self.git('reset', '--soft', '@{%u}' % reset)
+      if isinstance(e, GitLoginError):
+        raise
       portal_status_message = str(e)
     else:
       head = self.git('rev-parse', '--short', 'HEAD')