25

I am editing a git repository that was cloned using --depth 1 (shallow clone).

I want to push my changes (commits) but I get this error:

$ git push
Counting objects: 14, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (8/8), done.
Writing objects: 100% (8/8), 56.88 KiB | 0 bytes/s, done.
Total 8 (delta 5), reused 0 (delta 0)
fatal: protocol error: expected old/new/ref, got 'shallow deeb2171db739fd366...'
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly

How can I solve this?

Running git --version I get this:

$ git --version
git version 1.9.rc1
5
  • 1
    Pushes from shallow clones was added in Git 1.9, which you obviously run on the client, but what about the server? It looks like the pushing-shallow-clone feature required changes to the Git protocol and that your server doesn't recognize what the client is sending. Feb 4, 2014 at 16:01
  • 1
    @MagnusBäck Can I do something to solve this if my repo is hosted on Bitbucket? Feb 4, 2014 at 16:02
  • Assuming I was right about the problem being that the server is too old, no. You'd have to wait for them to upgrade to support the new protocol. Feb 4, 2014 at 16:04
  • Well, unless you don't want to copy your work into a non-shallow repository as described in one of the answers. Feb 4, 2014 at 16:34
  • @MagnusBäck Yep, the second solution is shorter and easier in my case. Feb 4, 2014 at 17:40

1 Answer 1

43
git fetch --unshallow

Also see: how to unshallow your repo

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.