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 извлекает репозиторий и, конечно, терпит неудачу из-за ошибки выше..

Ответ 1

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

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

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

git branch --set-upstream master origin/master

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

Ответ 2

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

$ 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).

Ответ 3

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

git pull origin master
git push -u origin master

Ответ 4

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

$ git checkout master

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

$ git pull origin/master

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

Ответ 5

@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.

Ответ 6

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

git branch --track

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

git pull

Ответ 7

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

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

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, вытащите его из указанной ветки.

Ответ 8

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

git checkout master

git pull origin master

Ответ 9

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

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.

Ответ 10

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

Ответ 11

Если вам нравится делать это все время, вы можете настроить псевдоним, чтобы сделать это автоматически, добавив следующее в свой файл .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/

Ответ 12

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

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 будет работать

Ответ 13

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

git fetch origin master

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

Ответ 14

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

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

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