Нет информации об отслеживании для текущего филиала

Я использую github относительно короткий период времени, и я всегда использовал клиент для выполнения коммитов и вытягиваний. Вчера я решил попробовать его из git bash, и я успешно создал новое репо и зафиксировал файлы.

Сегодня я внес изменения в репозиторий с другого компьютера, я зафиксировал изменения, и теперь я вернулся домой и выполнил git pull для обновления моей локальной версии, и я получил следующее:

There is no tracking information for the current branch.
    Please specify which branch you want to merge with.
    See git-pull(1) for details

    git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream develop origin/<branch>

единственный участник этого репо - это я, и здесь нет веток (только мастер). Я нахожусь в окнах, и я выполнил извлечение из git bash:

введите описание изображения здесь

статус git:

$ git status
# On branch master
nothing to commit, working directory clean

ветка git:

$ git branch
* master

Что я делаю неправильно?


person valerio0999    schedule 17.08.2015    source источник
comment
Хорошо, а как насчет git remote -v? Что там написано?   -  person criswell    schedule 17.08.2015
comment
Возможный дубликат тега git checkout tag, git pull не работает в ветке   -  person rjmunro    schedule 18.02.2016
comment
Вы также можете получить эту ошибку, если у вас нет cd в каталог клонированного репо при выполнении git pull.   -  person Victoria Stuart    schedule 23.04.2018
comment
В Git 2.24, четвертый квартал 2019 года git pull --set-upstream-to=origin/master master возможно. См. мой ответ ниже   -  person VonC    schedule 18.09.2019


Ответы (14)


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

git pull origin master

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

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

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

person ComputerDruid    schedule 17.08.2015
comment
идеально! это сработало. Так что же случилось, если для git pull по умолчанию не было ветки по умолчанию? вот почему произошла ошибка? - person valerio0999; 17.08.2015
comment
--set-upstream, по-видимому, устарел в git 1.9.x. В дальнейшем вы захотите использовать что-то вроде git branch -u origin/master, если вы уже проверили мастер. Если нет, git branch -u origin/master master будет работать. - person Bart Read; 30.09.2015
comment
@BartRead обновил его, чтобы использовать новый более четкий синтаксис --set-upstream-to=. (который заменяет --set-upstream) - person ComputerDruid; 13.10.2015
comment
это похоже на плачевное положение дел - действительно ли нам нужно устанавливать это вручную для каждой ветви? Почему мы не можем просто установить origin в качестве удаленного по умолчанию, а затем иметь каждое нажатие / вытягивание по умолчанию для ветки в origin с тем же именем? это так сложно? - person Alexander Mills; 09.12.2015
comment
Ключевым моментом для меня здесь было то, что если вы отбросите и заново создадите пульт, то отслеживание, которое было установлено исходным fetch, будет потеряно. Следовательно, необходимо настроить его снова. :) - person Ben; 23.03.2016
comment
Было бы идеально было бы немного больше информации об отслеживании. В любом случае, что он отслеживает и как он используется? - person NeoJi; 13.06.2016
comment
@NeoJi - Вы можете проверить раздел Отслеживание ветвей на странице git-scm. com / book / en / v2 / Git-Branching-Remote-Branches - person nanosoft; 15.12.2017
comment
чтобы увидеть, на что указывает источник, вы можете использовать git remote -v. -v означает подробный. - person Onat Korucu; 12.03.2020
comment
Спасибо за это решение. Будьте здоровы. - person drakogemini2; 09.08.2020
comment
Ну тогда можешь получить fatal: refusing to merge unrelated histories. - person Ben Racicot; 22.10.2020
comment
становится фатальным: ветка master не существует. Почему? - person Jürgen K.; 28.10.2020
comment
@ JürgenK. Ветвь, скорее всего, больше не называется «мастер». Вам следует попробовать новое соглашение об именах main. - person s3c; 20.06.2021

См .: тег проверки git, сбой git pull в ветке

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

person rjmunro    schedule 18.02.2016
comment
Вот способ добавить его в глобальный .gitconfig в одну строку (можно изменить для локальной или другой конфигурации соответственно): git config --global alias.set-upstream '!git branch --set-upstream-to=origin/$(git symbolic-ref --short HEAD)' - person Danny Bullis; 15.07.2019

Ответ ComputerDruid отличный, но я не думаю, что нужно настраивать апстрим вручную, если вы этого не хотите. Я добавляю этот ответ, потому что люди могут подумать, что это необходимый шаг.

Эта ошибка исчезнет, ​​если вы укажете пульт, который хотите вытащить, как показано ниже:

git pull origin master

Обратите внимание, что origin - это имя пульта дистанционного управления, а master - это имя ветки.


1) Как проверить имя пульта

git remote -v

2) Как посмотреть, какие ветки доступны в репозитории.

git branch -r
person Aerin    schedule 02.03.2018

Я часто сталкиваюсь с этим точным сообщением, потому что я создаю локальные ветки через git checkout -b <feature-branch-name> без предварительного создания удаленной ветки.

После того, как вся работа была завершена и зафиксирована локально, исправление было git push -u, которое создало удаленную ветку, отправило всю мою работу, а затем URL-адрес слияния.

person Ron Reynolds    schedule 30.08.2017
comment
чего бы это ни стоило, мне пришлось запустить git push -u origin <my-feature-branch-name>, чтобы создать удаленную ветку и продвинуть свою работу - person Donnie C; 21.01.2019

Я пробовал приведенные выше примеры и не мог синхронизировать их с веткой (не основной), которую я создал на другом компьютере. В качестве фона я создал этот репозиторий на компьютере A (git v 1.8), а затем клонировал репозиторий на компьютер B (git 2.14). Я внес все свои изменения на компьютер B, но когда я попытался перенести изменения на компьютер A, я не смог этого сделать, получив ту же ошибку, что и выше. Как и в приведенных выше решениях, мне пришлось сделать:

git branch --set-upstream-to=origin/<my_repository_name> 
git pull

немного отличается, но, надеюсь, поможет кому-то

person imapotatoe123    schedule 05.02.2018
comment
Это сработало для меня; Я также использовал не главную ветку, которая была настроена на другом компьютере. Используя эту команду в Git Bash, я смог получить свои изменения :) - person Novastorm; 19.06.2019

пытаться

   git pull --rebase

надеюсь, что этот ответ поможет изначально ответить здесь https://stackoverflow.com/a/55015370/8253662

person Mahesh Jamdade    schedule 06.03.2019

С Git 2.24 вам не придется делать

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

Вы сможете:

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

Дополнительные сведения см. В разделе «Пульт по умолчанию и ветвление с использованием опции -u - работает с push, но не pull».

person VonC    schedule 18.09.2019

1) git branch --set-upstream-to = origin / <master_branch> feature / <your_current_branch>

2) git pull (мерзавец тянуть)

person MERLIN THOMAS    schedule 19.12.2017

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

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

git checkout -b name_of_new_branch # create the new branch
git push origin name_of_new_branch # push the branch to github

Потом:

git pull origin name_of_new_branch

Теперь все должно быть в порядке!

person Newt    schedule 13.01.2020

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

  1. Вытяните с определенным именем ветки

git pull origin master

  1. Или вы можете отслеживать конкретную ветку до локальной.

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

person KR93    schedule 07.04.2020
comment
Почему меня волнует, если текущая ветка не отслеживает ветку на удаленном компьютере - person AgilePro; 21.04.2021

Попробуйте использовать

git push --set-upstream origin <branch_name>

Иначе

использовать

git push -u 

подскажет, что нужно сделать.

person Sampathkumar    schedule 07.09.2020

$ git branch --set-upstream-to=heroku/master master и

$ git pull

у меня сработало!

person Maya    schedule 30.12.2019

Для тех, кто хочет понять, почему это происходит, есть несколько важных концепций:

  • Репозиторий git может иметь ноль или более пультов, которые называются ссылками на другие репозитории, обычно где-то на каком-то центральном сервере. Вы можете перечислить их с помощью git remote -v
  • Если вы клонируете репозиторий с другого сервера, для вас будет настроен пульт по умолчанию с именем origin.
  • Полный синтаксис для git push и git pull состоит в том, чтобы указать удаленное имя и ветку на этом пульте.
  • Локальная ветвь может быть связана с веткой на удаленном компьютере, поэтому вам не нужно вводить ее каждый раз, когда вы тянете или нажимаете.
  • Если вы извлекаете ветку из удаленного репозитория с помощью git switch branchname или git switch -u origin / branchname, ассоциация будет установлена ​​для вас. (переключатель git в этом случае такой же, как git checkout)
  • Если вы создадите ветку локально, а затем нажмете ее с помощью git push -u origin, она установит связь.
  • Но если вы не включите -u в исходное извлечение или отправку, связь не будет сохранена, поэтому вам нужно каждый раз указывать конкретную информацию.

Решение, как указывают другие ответы, состоит в том, чтобы установить связь с git branch --set-upstream-to = origin / branchname, где origin - это имя удаленного компьютера, а branchname - это то, что ветвь вызывается на удаленном сервере. . Вероятно, это то же имя, что и на местном уровне, но это не обязательно.

person IMSoP    schedule 17.04.2021

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

person Amir Hussain    schedule 02.06.2020
comment
Всегда полезно добавить пояснение к своему ответу, чтобы он был более ясным и понятным. Прочтите stackoverflow.com/help/how-to-answer. - person 32cupo; 02.06.2020
comment
В дополнение к мнению @ 32cupo, это по сути то же самое, что принятый ответ пятилетней давности, но с меньшими пояснениями. - person Jeremy Caney; 03.06.2020
comment
Если я работаю над веткой, которая находится в источнике, это что-нибудь сломает? - person AgilePro; 21.04.2021