我正在尝试这个:
mkdir ~/gitremote
cd ~/gitremote
git init --bare
我可以看到像
这样的文件名HEAD config hooks objects
branches description info refs
好的,然后在另一个目录中,
git clone trosky@localhost:/Users/trosky/gitremote
vi readme (add one line)
git add .
git commit -m "1st file"
git push origin master
然后它出错:
$git push origin master
error: src refspec master does not match any.
error: failed to push some refs to 'trosy@localhost:/Users/trosky/gitremote'
我搜索了谷歌,它说这种错误是由于远程仓库上的空文件夹。但远程仓库不是空的,在本地我提交的文件也不是空的。为什么这个错误仍然会提示出来?
如何解决?感谢。
答案 0 :(得分:3)
尝试使用语法:
git push -u origin master
由于您要推送空仓库,因此需要 explicitly push master
。
否则,default push.policy
being simple
,Git会在你的远程仓库中寻找一个名为master
的分支(因为你的远程裸仓库是空的,它还没有master
分支)
当然,你在远程裸仓库中看不到任何自述文件,因为它是一个简单的仓库:没有工作树。
' git clone / Users / trosky / gitremoe'之间的区别是什么?和' git clone&#t; trosy @ localhost:/ Users / trosky / gitremote'
一个是使用名为local protocol的文件协议,另一个是ssh protocol。你不需要在这里使用ssh。
答案 1 :(得分:0)
您可以改为使用git clone /Users/trosky/gitremote
。
git clone /Users/trosky/gitremote
使用本地协议。由于您的remoterepo位于本地PC上,因此本地协议适用且速度快。
git clone 'trosy@localhost:/Users/trosky/gitremote'
使用 scp 来传输主要用于不同设备数据传输的数据。
推送到远程仓库后,您可能会转到远程仓库文件夹但找不到推送的文件。但它确实存在。因为裸仓库没有工作目录。它存储在/Users/trosky/gitremote/objects
中。您可以检查/Users/trosky/gitremote/refs/heads/master
中的提交SHA-1是否符合本地存储。