git checkout tag, 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>

I хочу!--3--> чтобы обновить только главную ветку и оставить мою текущую ветку в покое (это все равно тег). Возможно ли что-то подобное?

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

14 130

14 ответов:

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

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

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

git branch --set-upstream master origin/master

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

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

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

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

git pull origin master
git push -u origin master

переключитесь обратно в главную ветвь с помощью

$ git checkout master

а затем запустить git pull операция

$ git pull origin/master

после этого, вы можете переключиться обратно на ваш my_branch еще раз.

@alesko : это невозможно сделать толькоgit pull после выезда my_branch обновить

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

git branch --track

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

git pull

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

шаги, чтобы исправить это:

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

попробуй такое

git checkout master

git pull origin master

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

git branch --set-upstream master origin/master

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

git branch --track master origin/master

мне также нравится Ссылка doc, что @casey notice:

-u <upstream>
  Set up <branchname>'s tracking information so <upstream> is considered  
  <branchname>'s upstream branch. If no <branchname> is specified,  
  then it defaults to the current branch.

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

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

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

когда вы видите , просто запустите git set-upstream, потом git push снова.

спасибо https://zarino.co.uk/post/git-set-upstream/

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

git pull origin master

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

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

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

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

git branch -u origin/master

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

для того, чтобы просто скачать обновления:

git fetch origin master

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

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

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

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