Git: какой удаленный по умолчанию настроен для филиала? - PullRequest
185 голосов
/ 31 января 2011

У меня есть удаленное пустое хранилище hub.Я работаю только в ветке master.Последнее предложение этого сообщения об ошибке ниже заставляет меня задуматься: как мне узнать, какой «настроенный по умолчанию пульт для вашей текущей ветви» ?И как мне это установить?

[myserver]~/progs $ git remote -v
hub     ~/sitehub/progs.git/ (fetch)
hub     ~/sitehub/progs.git/ (push)

[myserver]~/progs $ git branch -r
  hub/master

[myserver]~/progs $ cat .git/HEAD
ref: refs/heads/master

[myserver]~/progs $ git pull hub
You asked to pull from the remote 'hub', but did not specify
a branch. Because this is not the default configured remote
for your current branch, you must specify a branch on the command line.

Ответы [ 4 ]

258 голосов
/ 31 января 2011

Вы можете сделать это проще, гарантируя, что ваш .gitconfig останется в значимом состоянии:

При использовании Git версии v1.8.0 и выше

git push -u hub master при нажатии или:
git branch -u hub/master

ИЛИ

(Это установит пульт дистанционного управления для в настоящее время извлеченной ветви на hub/master)
git branch --set-upstream-to hub/master

ИЛИ

(для пульта с именем branch_name будет установлено значение hub/master)
git branch branch_name --set-upstream-to hub/master

Если вы используете v1.7.x или ранее

, вы должны использовать --set-upstream:
git branch --set-upstream master hub/master

222 голосов
/ 31 января 2011

Отслеживание удаленной ветки

Вы можете указать удаленный репозиторий по умолчанию для отправки и извлечения, используя опцию track в git-branch. Обычно это можно сделать, указав опцию --track при создании локальной ветки master, но, поскольку она уже существует, мы просто обновим конфигурацию вручную, например:

Редактировать .git/config

[branch "master"]
  remote = origin
  merge = refs/heads/master

Теперь вы можете просто использовать git push и git pull.

[ источник ]

24 голосов
/ 02 июня 2014

Ради полноты: в предыдущих ответах рассказывается, как установить восходящую ветку, а не как ее увидеть.

Есть несколько способов сделать это:

git branch -vv показывает эту информацию для всех филиалов. (отформатирован синим цветом в большинстве терминалов)

cat .git/config также показывает это.

Для справки:

0 голосов
/ 11 июля 2019

команда для получения эффективного push-сообщения для филиала, например, master, имеет вид:

git config branch.master.pushRemote || git config remote.pushDefault || git config branch.master.remote

Вот почему (из вывода "man git config"):

branch.name.remote [...] сообщает git fetch и git push, какой удаленный выбор из / push to [...] [для push] может быть переопределен с помощью remote.pushDefault (для всех ветвей) [и] для текущей ветки [..], дополнительно переопределено branch.name.pushRemote [...]

По какой-то причине "man git push" только говорит о branch.name.remote (даже если он имеет наименьший приоритет из трех) + ошибочно заявляет, что если он не установлен, push по умолчанию устанавливается на origin - он не просто, когда вы клонируете репозиторий, branch.name.remote устанавливается в origin, но если вы удалите этот параметр, git push не будет работать, даже если у вас все еще есть удаленный источник

...