3

我正在尝试这个:

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'

我搜索了谷歌,它说这种错误是由于远程仓库上的空文件夹造成的。但是远程仓库不是空的,我在本地提交的文件也不是空的。为什么这个错误仍然提示出来?

如何解决?谢谢。

4

2 回答 2

4

尝试使用以下语法:

git push -u origin master

由于您要推送到空仓库,因此您需要显式推送master.
否则,默认情况下push.policysimple Git 会在你的远程仓库中寻找一个名为的分支master(并且由于你的远程裸仓库是空的,它还没有master分支)

当然,您不会在远程裸仓库中看到任何自述文件,因为它是一个裸仓库:没有工作树。

'git clone /Users/trosky/gitremoe' 和 'git clone 'trosy@localhost:/Users/trosky/gitremote' 有什么区别

一种是使用文件协议,也称为本地协议,另一种是ssh 协议。这里不需要 ssh。

于 2016-12-26T07:11:14.997 回答
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. 您可以检查提交的 SHA-1/Users/trosky/gitremote/refs/heads/master是否与本地 repo 一致。

于 2016-12-26T08:24:04.600 回答