git checkout tag, git pull не вдається у відділенні


133

Я клонував сховище 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лише оновити головну гілку і залишити свою поточну гілку в спокої (це все одно тег). Чи можливо щось подібне?

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


Відповіді:


114

Редагувати: Для новіших версій Git, які --set-upstream masterзастаріли, --set-upstream-toзамість цього слід використовувати :

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

Як підказано, ви можете просто запустити:

git branch --set-upstream master origin/master

Після цього ви можете просто запустити git pullоновлення коду.


5
Це вирішило проблему. Але мені ще належить зрозуміти, як моя головна галузь втратила посилання на походження. Я був на гілці і робив git checkout master. Я не міг цього зробити, git pullтому що згадка про походження втрачена. Зараз це працює. Дякую!
Аріель

'гілка git --set-upstream-to = origin / master master my_branch' працювала на мене
Blue Clouds

90

У мене була така ж проблема і виправлено її за допомогою цієї команди:

$ git push -u origin master

З файлу довідки -u в основному встановлює типове значення для тягне:

-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).

48

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

git pull origin master
git push -u origin master

9

Переключитися назад на головну гілку за допомогою

$ git checkout master

а потім запустіть git pullоперацію

$ git pull origin/master

Після цього ви можете знову перейти до свого my_branch.


6
Саме цього я намагаюся уникати. Мені хотілося знати, чи існує "офіційний" спосіб це зробити.
алесько

5

@alesko : не можна робити лише git pullпісля оформлення замовлення my_branchлише оновлення 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>'s tracking information so <upstream> is considered  
  <branchname>'s upstream branch. If no <branchname> is specified,  
  then it defaults to the current branch.

4

Спочатку переконайтеся, що ви знаходитесь на правій гілці.
Тоді (лише один раз):

git branch --track

Після цього це знову працює:

git pull

4

У вас може бути кілька відділень. І ваша нинішня філія не встановила свій потік віддалено.

Кроки, щоб виправити це:

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це, він витягується із зазначеної гілки.


3

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

git pull origin master

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

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

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

- setset upstream є застарілим у git 1.9.x, мабуть. Вперед ви хочете використовувати щось на кшталт

git branch -u origin/master

якщо ви вже перевірили майстра. Якщо ні, git branch -u origin/master masterбуде працювати


2

Спробуйте це

git checkout master

git pull origin master

2
Це не справді відповідає на питання. Крім того, хоча немає прийнятої відповіді, проголосований верхній є набагато більш придатним як відповідь на це старе запитання
fejese

1

Потрібно налаштувати відстеження (вище) за поточною гілкою

git branch --set-upstream master origin/master

Вже застаріле замість цього ви можете використовувати --track flag

git branch --track master origin/master

Мені також подобається посилання на документ, що @casey зазначає:

-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.

1

Що працювало для мене: git branch --set-upstream-to = origin master Коли я знову здійснив поштовх, я отримав лише оновлення від майстра, і попередження пройшло.


1

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


0

Щоб просто завантажити оновлення:

git fetch origin master

Однак це просто оновлює посилання, яке називається origin/master. Найкращим способом оновити локальну систему masterбуде замовлення / злиття, згадане в іншому коментарі. Якщо ви можете гарантувати, що ваш локальний masterне відхилився від основного магістралі, який origin/masterу вас є, ви можете використати git update-refдля відображення поточного потоку masterна нову точку, але це, мабуть, не найкраще рішення для використання на регулярній основі ...


0

Ця команда застаріла: git branch --set-upstream master origin/master

Отже, при спробі налаштування відстеження це команда, яка працювала для мене:

git branch --set-upstream-to=origin/master master
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.