6

I just created a new Heroku app and I don't manage to push the subtree folder backend of my repo (branch staging) to the newly created app myapp-staging (no branch yet).

Here is how I push the subtree:

git push heroku `git subtree split --prefix=backend staging`:master

An the related error:

error: unable to push to unqualified destination: master
The destination refspec neither matches an existing ref on the remote nor
begins with refs/, and we are unable to guess a prefix based on the source ref.
error: failed to push some refs to 'git@heroku.com:myapp-staging.git'

I tried git fetch heroku. What does this "unqualified destination" mean? Shouldn't this command create the distant branch?

ocolot
  • 718
  • 6
  • 18

2 Answers2

10

Ok, got an idea thanks to http://makingsoftware.wordpress.com/2013/02/16/using-git-subtrees-for-repository-separation/

I tried:

git subtree split --prefix=bakcend -b test
git push heroku test:master

And it worked like a charm. May the problem would be with the creation of the branch using the subtree command...

ocolot
  • 718
  • 6
  • 18
  • 1
    Your solution works, but I am wondering why the first approach does not work. Because it is pointed as the right way of doing it in many places. – jgato Aug 12 '14 at 10:10
1

As discussed here, you can push to refs/heads/master to fix this problem, after which you can change back to master, although I'm still not entirely sure /why/ this works.

# run this once
git push origin master:refs/heads/master

# now you can use this forever
git push origin master
Community
  • 1
  • 1
SleepyCal
  • 5,739
  • 5
  • 33
  • 47