Ошибка при "git push" на github - PullRequest
22 голосов
/ 06 июня 2009

У меня есть публичный репозиторий на github.com с двумя ветками: master и test.

Я создал новый каталог локально и сделал:

[ ] git clone git@github.com:{username}/{projectname}.git

Затем я создал новую ветку с именем my_test с

[ ] git branch my_test

и переключился на него.

[ ] git checkout my_test

Затем я слил его из моей test ветви моего публичного репозитория с

[ ] git merge origin/test

и это привело к перемотке вперед.

Я внес некоторые изменения и совершил их. Затем я попытался отправить локальную ветку my_test в публичную ветку test на github с помощью

[ ] git push git@github.com:{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 'git@github.com:{username}/{projectname}.git

Что я делаю не так?

Ответы [ 5 ]

30 голосов
/ 06 июня 2009

Возможно, попробуйте:

git push git@github.com:{username}/{projectname}.git HEAD:test

Формат последнего параметра в этой командной строке: refspec , который является исходной ссылкой, за которой следует двоеточие, а затем целевой адрес. Вы также можете использовать имя локальной ветки (my_test) вместо HEAD, чтобы убедиться, что вы нажимаете правильную ветвь.

В документации для git push есть более подробная информация об этом параметре.

16 голосов
/ 08 июня 2009

Кроме того, вам не нужно вводить весь URL каждый раз, когда вы хотите нажать. Когда вы запустили клон, git сохранил этот URL как 'origin', поэтому вы можете запустить что-то вроде 'merge origin / test' - это означает ветку 'test' на вашем сервере 'origin'. Итак, самый простой способ отправить на ваш сервер в этом случае будет:

git push origin my_test:test

Это подтолкнет вашу локальную ветку 'my_test' к ветке 'test' на вашем сервере 'origin'. Если вы назвали свою локальную ветвь так же, как ветвь на сервере, то двоеточие необязательно, вы можете просто сделать:

git push origin test
2 голосов
/ 01 июня 2012

Эта ошибка также появляется, если вы пытаетесь перейти в новый репозиторий, не зафиксировав что-либо сначала. Попробуйте:

git add -A
git commit -am 'Initial commit'

А затем попробуйте снова.

1 голос
/ 21 декабря 2011

Думаю, здесь вам нужно настроить отслеживание веток. Пожалуйста, запустите следующее, чтобы включить отслеживание

git branch --track my_test origin/my_test

Для проверки

git push -u origin my_test
git pull origin my_test
0 голосов
/ 04 сентября 2012

Вы должны убедиться, что ваше локальное хранилище имеет то же имя, что и удаленное хранилище, которое вы пытаетесь отправить.

Во-первых, измените репозиторий с помощью git branch -m "test", чтобы my_test был "test". Во-вторых, просто тест git push

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...