Git тег проверки, git pull не работает в ветке

Я клонировал репозиторий git, а затем проверил тег:

# git checkout 2.4.33 -b my_branch

Это нормально, но когда я пытаюсь запустить git pull в моей ветке, git выплевывает эту ошибку:

Информация о текущей ветке отсутствует. пожалуйста укажите, с какой веткой вы хотите объединиться. См. git -pull (1) для подробнее

git pull <remote> <branch>

Если вы хотите установить информацию отслеживания для этой ветки, вы можете сделать это с:

git branch --set-upstream new origin/<branch>

Я хочу, чтобы git pull обновлял основную ветвь и оставлял только мой текущий ветвь (в любом случае это тег). Возможно ли подобное?

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

121
задан alesko 13 апр. '12 в 22:55
источник поделиться
14 ответов

Изменить: Для более новых версий Git, --set-upstream master устарели, вместо этого следует использовать --set-upstream-to:

git branch --set-upstream-to=origin/master master

Как только это будет предложено, вы можете просто запустить:

git branch --set-upstream master origin/master

После этого вы можете просто запустить git pull, чтобы обновить код.

100
ответ дан Vincent Wen 11 апр. '13 в 16:13
источник поделиться

У меня была такая же проблема и исправлена ​​с помощью этой команды:

$ git push -u origin master

В файле справки -u в основном устанавливает значение по умолчанию для pulls:

-u, --set-upstream`

  For every branch that is up to date or successfully pushed, add 
  upstream (tracking) reference, used by argument-less git-pull(1) and
  other commands. For more information, see branch.<name>.merge in 
  git-config(1).
89
ответ дан Simon Raik-Allen 09 янв. '13 в 13:08
источник поделиться

Попробуйте выполнить следующие команды:

git pull origin master
git push -u origin master
47
ответ дан navins 27 марта '13 в 12:14
источник поделиться

Вернитесь к главной ветке с помощью

$ git checkout master

а затем выполните операцию git pull

$ git pull origin/master

Впоследствии вы можете снова вернуться к своему my_branch.

6
ответ дан cfedermann 13 апр. '12 в 23:23
источник поделиться

@alesko: после обновления my_branch невозможно выполнить только git pull, чтобы обновить ветвь master.
Поскольку git pull также будет сливаться с ветвью текущей → в вашем сценарии с my_branch

@Simon: это будет также толчок. почему это?

$ git branch -u origin/master
Branch master set up to track remote branch master from origin.

и согласно документам:

-u <upstream>
  Set up <branchname> tracking information so <upstream> is considered  
  <branchname> upstream branch. If no <branchname> is specified,  
  then it defaults to the current branch.
5
ответ дан Casey 13 марта '13 в 18:58
источник поделиться

Сначала убедитесь, что вы находитесь на правильной ветке.
Затем (только один раз):

git branch --track

После этого это снова работает:

git pull
4
ответ дан drzymala 07 окт. '13 в 17:00
источник поделиться

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

Шаги для исправления:

git checkout branch_name
git branch --set-upstream-to=origin/remote_branch_name local_branch_name

например.

// this set upstream of local branch develop to remote branch  origin/develop,
git branch --set-upstream-to=origin/develop develop

После этого, когда вы выполняете git pull, вытащите его из указанной ветки.

4
ответ дан Eric Wang 12 нояб. '14 в 7:30
источник поделиться

Попробуйте это

git checkout master

git pull origin master
2
ответ дан vanarajcs 14 нояб. '14 в 15:47
источник поделиться

Что сработало для меня: git branch --set-upstream-to = origin master Когда я снова потянул, я получил обновления от мастера, и предупреждение исчезло.

1
ответ дан Jason D 19 сент. '14 в 16:48
источник поделиться

Вам нужно настроить отслеживание (вверх по течению) для текущей ветки

git branch --set-upstream master origin/master

Я уже устарел, вместо этого вы можете использовать флаг --track

git branch --track master origin/master

Мне также нравится ссылка doc, которая указывает @casey:

-u <upstream>
  Set up <branchname> tracking information so <upstream> is considered  
  <branchname> upstream branch. If no <branchname> is specified,  
  then it defaults to the current branch.
1
ответ дан Jorman Bustos 16 мая '14 в 18:59
источник поделиться

Если вам нравится делать это все время, вы можете настроить псевдоним, чтобы сделать это автоматически, добавив следующее в свой файл .gitconfig:

[alias]
    set-upstream = !git branch --set-upstream-to=origin/`git symbolic-ref --short HEAD`

Когда вы увидите сообщение There is no tracking information..., просто запустите git set-upstream, затем git push снова.

Благодаря https://zarino.co.uk/post/git-set-upstream/

1
ответ дан rjmunro 18 февр. '16 в 19:33
источник поделиться

Вы можете указать, какую ветку вы хотите вытащить:

git pull origin master

Или вы можете настроить его таким образом, чтобы локальная главная ветвь отслеживала ветку ведущего устройства github в качестве восходящего потока:

git branch --set-upstream-to=origin/master master
git pull

Это отслеживание веток настраивается для вас автоматически при клонировании репозитория (только для ветки по умолчанию), но если вы добавите удаленный доступ в существующий репозиторий, вам необходимо настроить отслеживание самостоятельно. К счастью, совет, приведенный git, позволяет легко запомнить, как это сделать.

- set-upstream устарел в git 1.9.x, по-видимому. В будущем вы хотите использовать что-то вроде

git branch -u origin/master

Предположим, что вы уже проверили мастер. Если не, git branch -u origin/master master будет работать

1
ответ дан harrypotter0 23 нояб. '17 в 14:19
источник поделиться

Эта команда устарела: git branch --set-upstream master origin/master

Итак, при попытке настроить отслеживание это команда, которая работала для меня:

git branch --set-upstream-to=origin/master master
0
ответ дан Aaron Lelevier 01 июля '15 в 20:40
источник поделиться

Чтобы просто загрузить обновления:

git fetch origin master

Однако это просто обновляет ссылку под названием origin/master. Лучший способ обновить локальный master - это проверка/слияние, упомянутая в другом комментарии. Если вы можете гарантировать, что ваш локальный master не отклонился от основной соединительной линии, в которой origin/master включен, вы можете использовать git update-ref для сопоставления текущего master с новой точкой, но это, вероятно, не лучшее решение для регулярного использования...

0
ответ дан twalberg 14 апр. '12 в 0:55
источник поделиться

Другие вопросы по меткам