Ошибка при "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