Мастер происхождения git pull возвращает фатальный: недопустимый refspec

Вот проблема:

Всякий раз, когда я делаю

$ git pull 'https://github.com/username/reponame.github.io.git'

с последующим URL я не получаю никаких проблем, но когда я делаю

git pull origin master 'https://github.com/username/reponame.github.io.git'

с последующим URL возвращает

fatal: Invalid refspec 'https://github.com/username/reponame.github.io.git'

Что это значит и как мне это исправить?

2 ответа

Решение

Если вы уже установили удаленное отслеживание филиалов (т.е. git clone делает это автоматически) и хочет использовать git pull с намерением получить и объединить последние коммиты для текущей ветки из удаленного репозитория, я полагаю, что будет достаточно выполнить следующее:

git pull

Для достижения того же эффекта с включением refspec (излишне многословно):

// Pulls the remote 'master' branch down to the local 'master' branch
git pull origin master:refs/remotes/origin/master

Вы получаете эту ошибку, потому что предоставление URL-адреса не соответствует формату refspec.

Для получения дополнительной информации о том, как работает refspec и его синтаксис, обратитесь к этой главе из замечательной книги Pro Git. Надеюсь, это поможет!

Пожалуйста, объясните, что ваш git pull origin master 'https://github.com/username/reponame.github.io.git' колл должен делать (по твоему мнению)?

Если вы хотите извлечь ветку "master" из репозитория, используя его явный URL, то команда для вызова будет

git pull https://github.com/username/reponame.github.io.git master

потому что "origin" - это просто имя так называемого "удаленного имени", которое является своего рода настроенным псевдонимом для репозитория, который позволяет вам не вводить URL этого репо каждый раз, когда вы получаете к нему доступ.

Канонический призыв к git pull является

git pull [<repo> [<refspec> ...]]

где части в [...] являются необязательными - см. страницу руководства.

Другие вопросы по тегам