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