3

私はこれを試していました:

mkdir ~/gitremote
cd ~/gitremote
git init --bare

次のようなファイル名が表示されます

HEAD        config      hooks       objects
branches    description info        refs

OK、それから別のディレクトリで、

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'

Googleで検索したところ、この種のエラーはリモートリポジトリの空のフォルダーが原因であると表示されています。しかし、リモートリポジトリは空ではなく、ローカルでも空ではないファイルをコミットしています。このエラーがまだ表示されるのはなぜですか?

修正方法は?ありがとう。

4

2 に答える 2

4

次の構文を試してください。

git push -u origin master

空のリポジトリにプッシュしているため、明示的にプッシュmasterする必要があります。
それ以外の場合、デフォルトpush.policyは でsimpleあり、Git はリモート リポジトリで名前が付けられたブランチを探しmasterます (リモートのベア リポジトリは空であるため、masterブランチはまだありません) 。

もちろん、リモートのベア リポジトリには readme は表示されません。これはベア リポジトリであるためです。作業ツリーはありません。

'git clone /Users/trosky/gitremoe' と 'git clone 'trosy@localhost:/Users/trosky/gitremote' の違いは何ですか?

1 つはローカル プロトコルとも呼ばれるファイル プロトコルを使用し、もう 1 つはsshプロトコルを使用します。ここでは ssh は必要ありません。

于 2016-12-26T07:11:14.997 に答える
0

代わりに使用できますgit clone /Users/trosky/gitremote

git clone /Users/trosky/gitremoteローカル プロトコルが使用されます。リモートレポはローカル PC にあるため、ローカル プロトコルが適切で高速です。

git clone 'trosy@localhost:/Users/trosky/gitremote'主にさまざまなデバイスのデータ転送に使用されるデータを転送するためにscpが使用されます。

リモート リポジトリにプッシュした後、リモート リポジトリ フォルダに移動しても、プッシュされたファイルが見つからない場合があります。でも実際に存在します。ベアリポジトリには作業ディレクトリがないためです。に格納されてい/Users/trosky/gitremote/objectsます。また、コミット SHA-1 が/Users/trosky/gitremote/refs/heads/masterローカル リポジトリに従っていることを確認できます。

于 2016-12-26T08:24:04.600 に答える