#git #git_push
$ git status On branch master Your branch is ahead of 'origin/master' by 3 commits. ... $ git push origin Tim_Musharapov error: src refspec Tim_Musharapov does not match any. error: failed to push some refs to '...' Почему не удается сделать push?
Ответы
Ответ 1
error: src refspec Tim_Musharapov does not match any Это означает, что в репозитории origin просто нет ветки с именем Tim_Musharapov. Её нужно создать. Для создания веток применяется такой синтаксис: git push origin что:куда Здесь что - это локальная ветка, которую вы хотите запушить, а куда - имя новой ветки на origin, в которую вы хотите запушить ветку что. А origin это название удалённого репозитория (remote), оно может быть другим, но по умолчанию используется такое. Поэтому предложенный в соседнем ответе вариант git push origin master:Tim_Musharapov означает "Взять локальную ветку master и запушить во вновь создаваемую ветку Tim_Musharapov". Это работает, но появится несоответствие в названиях локальных и удалённых веток. А ещё ветка master у вас теперь занята под собственную работу и стало неудобно получать обновления ветки master репозитория origin: Your branch is ahead of 'origin/master' by 3 commits В вашей ветке master есть три ваших коммита, так что git pull в эту ветку уже не получится. Есть общепринятая практика: называть локальные и удалённые ветки одинаково. Это не обязательно (т.е. Git позволяет делать и по-другому), но удобно и практично. Соответственно, если вам нельзя изменять удалённую ветку master то не вносите изменений по ходу работы в локальный master. Поэтому предлагаю такое решение: Для начала нам нужна ветка, в которую будем коммитить результаты своей работы. Она может называться, например, Tim_Musharapov, но обычно ветку называют по решаемой задаче, а не по имени разработчика. Если такой ветки ещё нет, её нужно создать так, чтобы она дублировала master (смотрела на тот же коммит). git checkout -b Tim_Musharapov master Если ветка уже есть, обновим её до текущего master: git checkout Tim_Musharapov git merge --ff-only master # если конфликт, значит там есть какие-то изменения, которых нет в master # нужно смотреть и разбираться. пушим её в origin, ключ -u сохраняет соответствие локальной и удалённой ветки git push -u origin Tim_Musharapov:Tim_Musharapov # в следующий раз из этой ветки можно будет пушить проще: git push А ветку master вернём к состоянию как на remote git checkout master git reset --hard origin/master # В локальную ветку master мы будем получать обновления с origin git checkout master git pull Ещё немного про синтаксис что:куда: git checkout somebranch # Оба варианта создают одноимённую ветку на origin git push origin -u somebranch git push origin -u somebranch: # Запушить "ничего" в ветку - значит удалить её git push origin :otherbranchОтвет 2
Потому что идет привязка к основной ветке. Делайте так: git push origin master:Tim_Musharapov
Комментариев нет:
Отправить комментарий