Інформація відстеження для поточної гілки відсутня


580

Я використовую 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>

Єдиним учасником цього репо є я, і немає гілок (просто майстер). Я на windows і я виконав тягнути з git bash:

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

статус git:

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

гіт гілки:

$ git branch
* master

Що я роблю неправильно?


Гаразд, а як щодо git remote -v? Що це говорить?
criswell

Можливий дублікат тегу git checkout, не
вдалося

Ви також можете отримати цю помилку, якщо при виконанні файлу не увійшли до каталогу клонованих репо git pull.
Вікторія Стюарт

З Git 2.24, Q4 2019, git pull --set-upstream-to=origin/master masterце можливо. Дивіться мою відповідь нижче
VonC

Відповіді:


949

Ви можете вказати, яку галузь ви хочете вивести:

git pull origin master

Або ви можете налаштувати його так, щоб ваша місцева головна гілка відслідковувала головну гілку github як вище:

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

Цей відстеження гілок встановлюється для вас автоматично, коли ви клонуєте сховище (лише для гілки за замовчуванням), але якщо ви додасте віддалене місце до наявного сховища, слід відстежувати його самостійно. На щастя, поради, які дає git, дуже легко запам'ятовують, як це зробити.


3
ідеально! це спрацювало. так що сталося - не було "гілки за замовчуванням" для типового "git pull"? ось чому виникла помилка?
valerio0999

16
- setset upstream є застарілим у git 1.9.x, мабуть. Вперед ви хочете використовувати щось на кшталт git branch -u origin/master, якщо припустити, що ви вже перевірили майстра. Якщо ні, git branch -u origin/master masterбуде працювати.
Барт читати

5
@BartRead оновив його, щоб використовувати новий чіткіший --set-upstream-to=синтаксис. (що замінює --set-upstream)
ComputerDruid

61
це здається прикрою ситуацією - чи насправді нам потрібно встановити це вручну для кожної гілки? Чому ми не можемо просто встановити походження для віддаленого за замовчуванням, а потім мати кожне натискання / витягнення за замовчуванням до гілки за походженням з тим же ім'ям? це так важко?
Олександр Міллс

4
Ага, ключова частина для мене тут полягала в тому, що якщо ви кинете та знову створите пульт, то відстеження, встановлене оригіналом fetch, було втрачено. Звідси необхідність її встановити заново. :)
Бен

42

Див.: Тег git checkout, не вдалося витягнути git у галузі

Якщо мені, як мені, потрібно робити це постійно, ви можете налаштувати псевдонім, щоб це зробити автоматично, додавши у свій .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/


1
Ось спосіб додати його до глобального .gitconfigв один рядок (можна змінити відповідно до локальних чи інших конфігурацій):git config --global alias.set-upstream '!git branch --set-upstream-to=origin/$(git symbolic-ref --short HEAD)'
Danny

17

Відповідь ComputerDruid чудова, але я не думаю, що це потрібно, щоб налаштувати вгору потоки вручну, якщо ви цього не хочете. Я додаю цю відповідь, тому що люди можуть подумати, що це необхідний крок.

Ця помилка буде відсутня, якщо ви вкажете пульт, який потрібно витягнути, як нижче:

git pull origin master

Зверніть увагу, що originце ім'я віддаленого пристрою і masterце назва гілки.


1) Як перевірити ім'я дистанційного користувача

git remote -v

2) Як побачити, які гілки доступні у сховищі.

git branch -r

1
Найкраща відповідь для мене, спасибі!
Бахман.А

7

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

Після того як вся робота була закінчена та здійснена локально, виправлення було git push -uстворено віддалену гілку, висунуло всю мою роботу, а потім URL-запит на об'єднання.


1
для чого це варто, мені довелося бігти git push -u origin <my-feature-branch-name>, щоб створити віддалену гілку і підштовхнути свою роботу
Донні С

6

Я намагався наведені вище приклади і не зміг змусити їх синхронізуватись із (не-майстерною) гілкою, яку я створив на іншому комп’ютері. Для тла я створив це сховище на комп'ютері A (git v 1.8), а потім клонував сховище на комп'ютер B (git 2.14). Я вніс усі зміни на комп B, але коли я спробував перетягнути зміни на комп'ютер, AI не зміг цього зробити, отримавши ту саму вище помилку. Подібно до вищезазначених рішень, мені довелося зробити:

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

трохи інший, але, сподіваємось, комусь допомагає


Це працювало для мене; Я також використовував не-головну гілку, налаштовану на іншому комп'ютері. Використовуючи цю команду в Git Bash, я тоді зміг отримати свої зміни :)
Novastorm





1

Те саме було зі мною раніше, коли я створив нову гіт-гіт, не підштовхуючи її до походження.

Спробуйте спочатку виконати ці два рядки:

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

Зараз має бути добре!


1

Це відбувається через те, що поточна гілка не має відстеження на гілці на віддаленому. тож ви можете це зробити двома способами.

  1. Потягніть із конкретною назвою гілки

git pull master master

  1. Або ви можете певну гілку відстежувати до місцевої гілки.

git гілка --set-upstream-to = origin /


0

git гілка --set-upstream-to = origin / main


2
Завжди корисно додати відповідь до своєї відповіді, щоб зробити її більш зрозумілою та зрозумілою. Прочитайте, будь ласка, stackoverflow.com/help/how-to-answer .
32cupo

1
Окрім точки зору @ 32cupo, це по суті те саме, що і п'ятирічна прийнята відповідь, але з меншим поясненням.
Джеремі Кейні
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.