Ошибка при "git push" в github
У меня есть публичный репозиторий на github.com с двумя ветвями: master
и test
.
Я создал новый каталог локально и сделал:
[ ] git clone [email protected]:{username}/{projectname}.git
Затем я создал новую ветвь с именем my_test
с
[ ] git branch my_test
и переключится на него.
[ ] git checkout my_test
Затем я объединил его с моей ветвью test
моего публичного репозитория с помощью
[ ] git merge origin/test
и это привело к быстрой перемотке вперед.
Я сделал некоторые изменения и совершил их.
Затем я попытался нажать локальную ветвь my_test
на общедоступную ветвь test
в github с помощью
[ ] git push [email protected]:{username}/{projectname}.git test
но я получил эту ошибку:
error: src refspec test does not match any.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to '[email protected]:{username}/{projectname}.git
Что я делаю неправильно?
Ответы
Ответ 1
Возможно, попробуйте:
git push [email protected]:{username}/{projectname}.git HEAD:test
Формат последнего параметра в этой командной строке - это refspec, который является исходным рефером, за которым следует двоеточие, а затем ссылка ref. Вы также можете использовать имя своего локального ветки (my_test
) вместо HEAD, чтобы убедиться, что вы нажимаете правильную ветвь.
В документации для git push
содержится более подробная информация об этом параметре.
Ответ 2
Кроме того, вам не нужно вводить весь URL-адрес каждый раз, когда вы хотите нажать. Когда вы запустили клон, git сохранил этот URL как "источник", поэтому вы можете запускать что-то вроде "merge origin/test" - это означает ветвь "test" на вашем "исходном" сервере. Итак, самый простой способ нажать на ваш сервер в этом случае:
git push origin my_test:test
Это приведет к тому, что ваша локальная ветвь my_test войдет в ветку "test" на вашем сервере "origin". Если вы назвали вашу локальную ветвь такой же, как ветвь на сервере, то двоеточие не обязательно, вы можете просто сделать:
git push origin test
Ответ 3
Я думаю, здесь вам нужно настроить отслеживание веток. Для включения отслеживания выполните следующие действия:
git branch --track my_test origin/my_test
Чтобы проверить
git push -u origin my_test
git pull origin my_test
Ответ 4
Эта ошибка также возникает, если вы пытаетесь нажать на новый репозиторий, не совершив ничего в первую очередь. Попробуйте:
git add -A
git commit -am 'Initial commit'
И затем повторите попытку.
Ответ 5
Вам нужно убедиться, что ваш локальный репозиторий имеет то же имя, что и ваш удаленный репозиторий, который вы пытаетесь нажать.
Сначала измените хранилище, используя git branch -m "test", чтобы "my_test" был "test".
Во-вторых, просто git push origin test