git push new file to bare repo не удалось: "ошибка: мастер src refspec не соответствует ни одному". Зачем?
Я пытался это:
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'
Я искал в Google, и он говорит, что такого рода ошибки из-за пустой папки на удаленном репо. Но удаленное хранилище не пусто, и локально я также фиксирую файл, который не пуст. Почему эта ошибка все еще выдает?
Как это исправить? Благодарю.
2 ответа
Попробуйте с синтаксисом:
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'
Один использует протокол файла, также называемый локальным протоколом, другой протокол ssh. Вам не нужен SSH здесь.
Ты можешь использовать git clone /Users/trosky/gitremote
вместо.
git clone /Users/trosky/gitremote
используется локальный протокол. Поскольку ваш удаленный репозиторий находится на локальном ПК, локальный протокол подходит и работает быстро.
git clone 'trosy@localhost:/Users/trosky/gitremote'
используется scp для передачи данных, которые в основном используются для передачи данных различных устройств.
После того, как вы нажмете на удаленное репо, вы можете перейти в папку удаленного репо, но не найдете загруженный файл. Но это на самом деле существует. Потому что в голом репо нет рабочего каталога. Он хранится в /Users/trosky/gitremote/objects
, И вы можете проверить фиксацию SHA-1 в /Users/trosky/gitremote/refs/heads/master
в соответствии с местным репо.