评:
@see http://www.thebuzzmedia.com/git-tip-git-push-no-refs-in-common-and-none-specified/
Git is a source-control tool used by software developers.
I recently switched from Subversion to Git and while things have been mostly smooth, there have been a few “WTF?” moments. I am going to try and blog the few beginner ones I ran into in hopes of helping anyone else.
Today I ran a ‘git push’ to shove my commits from my local repository back into the main remote repo, the result was this:
$ git push
No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as 'master'.
error: failed to push some refs to '[email protected]:painfreepr/<repo>.git'
The odd bit is that I had just done this with a previous repo about 30 mins ago and it worked fine; this was a new repository I was setting up. As it turns out this is the result of originally cloning an empty repository (link, link) which is exactly what I did. I had created a new repo on GitHub and wanted to pull the repo down in IntelliJ to then add some files to it via the GUI instead of from the command line; so I had checked out the empty repo right after creating it.
The fix, fortunately, is dead easy:
$ git push origin master
Doing this should provide output like:
$ git push origin master
Counting objects: 568, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (559/559), done.
Writing objects: 100% (568/568), 2.28 MiB | 2.18 MiB/s, done.
Total 568 (delta 205), reused 0 (delta 0)
To [email protected]:painfreepr/<repo>.git
* [new branch] master -> master
It is my understanding that the core issue is that there are no files in commonbetween the original remote repo you cloned (empty) and the one on-disk (now full of files). Doing the git-push-origin-master shoves your repo up into the empty repository and gives you that common base again so you can do a ‘git push‘ without issue.
Happy Git’ing!