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 Когда я снова потянул, я только получил обновления от мастера,и предупреждение ушло.
если бы мне нужно делать это все время, вы можете создать псевдоним, чтобы сделать это автоматически, добавляя следующий код
.gitconfig
file:[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 на регулярной основе...