Нажатие на git удаленной ветки

Я мог бы использовать руку, чтобы узнать, как перенаправить локальную ветвь в удаленную ветку. См. Ниже. Помогите оценить!

Локальная ветвь была создана после клонирования репо, а затем выполнила

$ git checkout -b mybranch remotes/origin/mybranch

$ git branch -a
  master
* mybranch
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/mybranch

Но при попытке нажимать изменения:

$ git push mybranch mybranch
fatal: 'mybranch' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

$ git push remotes/origin/mybranch mybranch
fatal: 'mybranch' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

$ git push origin/mybranch mybranch
fatal: 'mybranch' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

Ответ 1

Try

git push origin mybranch

Это подталкивает вашу ветку с именем mybranch к удаленному имени с именем origin

Ответ 2

Как говорит Абизерн, это работает:

git push origin mybranch

Но, чтобы объяснить далее, часть mybranch является refspec. Это указывает удаленный ref, который должен быть обновлен с данным локальным коммиттом.

Итак, приведенная выше команда эквивалентна:

git push origin mybranch:mybranch

или даже:

git push origin mybranch:refs/heads/mybranch

и, действительно, поскольку вы находитесь на локальном mybranch, вы могли бы сделать:

git push origin HEAD:mybranch

Это хорошо понять, потому что я часто нахожу себя в таких вещах, как:

git push origin HEAD^:mybranch

где вы хотите нажать все, кроме самого верхнего патча, на удаленную ветку.

Наконец, если вы хотите удалить удаленный mybranch, выполните следующие действия:

git push origin :mybranch

Ответ 3

Это старый вопрос, но я использовал эту страницу в качестве обратной ссылки в тот же день и получил ответ с другой точки зрения. По моему опыту, лучший способ - настроить настройки конфигурации таким образом, чтобы git push - это все, что вам нужно будет ввести в конце.

Вы перейдете к той же удаленной ветке, в которой вы обновляете свой код:

  • git config --global push.default upstream

И теперь вы устанавливаете удаленную ветвь как вверху (если она еще не была):

  • git branch --set-upstream-to origin/the_master
  • ПРИМЕЧАНИЕ. Старые версии могут отказаться от этой устаревшей формы команды /.
  • git branch --set-upstream local_branch origin/the_master

У вас есть два ветки - локальный и удаленный. Выполнение git pull или git push без аргументов должно и теперь делать то, что вы хотите. Это не будет ограничивать вас нажатием на удаленные ветки с тем же именем, что и локальные, как это делают некоторые из приведенных выше команд.

Последнее, что я обычно делаю: изменить git pull, чтобы изменить эту последовательность:

  • git fetch && git merge [remote_upstream] to
  • git fetch && git rebase [remote_upstream]

С помощью этой команды: git config --global branch.autosetuprebase remote