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 ответов:
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 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 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 Когда я снова потянул, я только получил обновления от мастера,и предупреждение ушло.
если бы мне нужно делать это все время, вы можете создать псевдоним, чтобы сделать это автоматически, добавляя следующий код
.gitconfigfile:[alias] set-upstream = !git branch --set-upstream-to=origin/`git symbolic-ref --short HEAD`когда вы видите , просто запустите
git set-upstream, потомgit pushснова.
вы можете указать, какую ветку вы хотите тянуть:
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 на регулярной основе...