нажатием на git удаленную ветку - PullRequest
30 голосов
/ 22 февраля 2011

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

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

$ 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

Ответы [ 3 ]

87 голосов
/ 23 февраля 2011

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

git push origin mybranch

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

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

git push origin mybranch:mybranch

или даже:

git push origin mybranch:refs/heads/mybranch

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

git push origin HEAD:mybranch

Это хорошо понять, потому что я часто обнаруживаю, что делаю что-то вроде:

git push origin HEAD^:mybranch

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

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

git push origin :mybranch
47 голосов
/ 22 февраля 2011

Попробуйте

git push origin mybranch

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

7 голосов
/ 13 апреля 2013

Это старый вопрос, но я использовал эту страницу в качестве ссылки в тот день, и у меня есть ответ с другой точки зрения. По моему опыту, лучший способ - это настроить параметры конфигурации так, чтобы 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] до
  • git fetch && git rebase [remote_upstream]

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

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