That's odd: the initial error message should have been prefixed by the word remote:
, i.e.:
remote: error: unable to write sha1 filename ./objects/54/1cc9d1b18f218c85f9d7f5fe7a129ab595f: No such file or directory
To git@gitlab.com:myrepo
! [remote rejected] master -> master (unable to migrate objects to permanent storage)
error: failed to push some refs to 'git@gitlab.com:myrepo
That would make sense, but this error, without the remote:
prefix, does not.
Any error prefixed by the word remote:
is coming from another Git. When you run git push
, your Git calls up another Git and sends information (including Git objects) to that other Git. That other Git does some verification to determine whether or not your git push
is allowed. Once it's done all the checking, and has decided that the update is allowed, that Git finishes by incorporating the objects into its repository and finalizing everything.
If the error had been prefixed by remote:
, this would then make sense: the remote—the other Git—tried to finalize everything, but something went wrong during this process. They then let your Git know that the problem occurred, so your Git copied the error message through, prefixing it with the word remote:
, then your Git printed the last three lines on its own, letting you know that something went wrong.
In short, this would mean that the problem is on another computer, not on your computer. You must show it to whoever manages that other computer (on gitlab.com
), and have them see what's wrong with their system.
But without the remote:
, none of this analysis quite holds up.