Питання Як перевірити віддалену гілку?


Хтось штовхнув гілку test з git push origin test до спільного сховища. Я бачу гілку з git branch -r.

Тепер я намагаюся перевірити пульт дистанційного керування test філія

Я спробував:

  • git checkout test що нічого не робить

  • git checkout origin/test дає * (no branch). Що збиткове. Як я можу бути на "немає гілки"?

Як перевірити віддалену гілку?


5316
2017-11-23 14:23


походження


@inger Але це не включає можливість перейменовувати нову локальну гілку (якщо ви хочете пізніше встановити "up-stream" і продовжувати називати послідовність) - fachexot
Я думаю, ця подія є марною. Нічого, здається, не працює, оригінальне питання, здається, було втрачено в багатьох відповідях. Я прочитав кожне слово, пробував усе, наведене нижче, і не знав, як зробити те, що OP хоче зробити. - Tony Ennis
Команди Gіt не є інтуїтивно зрозумілими, з чого починати, додавати зміни, внесені в останні версії до суміші, і у вас є ця сторінка ... - Christophe Roussy
Я відчуваю, що приймаю божевільні таблетки. Я намагаюся перевірити гілку з upstream, не лише origin, і кожна рекомендована відповідь не робить нічого віддаленого користування (pun-intended). РЕДАГУВАТИ - вибачте, безліч пропозицій, що містяться у перших 2-х відповідях, були марними; Третій (git branch test origin/test), що працює. Радійте, що в першій версії 2 кількість голосів у 20 разів ... - dwanderson
Можливо у вас є файл з назвою 'test' у своєму дереві робочого дерева, див stackoverflow.com/a/45006389/792416 для подробиць. - oldman


Відповіді:


Оновити

Відповідь Якуба насправді покращує це. За допомогою Git версій ≥ 1.6.6 ви можете просто зробити:

git fetch
git checkout test

(Користувач Масукомі вказує нижче git checkout test НЕ буде працювати в сучасному GIT, якщо у вас є кілька пультів. У цьому випадку скористайтеся git checkout -b test <name of remote>/test)

Старий відповідь

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

Щоб отримати гілку, вам просто потрібно:

git fetch origin

Це принесе вам всі віддалені галузі. Ви можете побачити гілки, доступні для оформлення, за допомогою:

git branch -v -a

За допомогою віддалених відділень в руці, тепер вам потрібно перевірити філію, яка вас цікавить, надаючи вам місцеву робочу копію:

git checkout -b test origin/test

7365
2017-11-23 14:26



Розширити це: git не дозволяє працювати на чужі гілки. Ви можете працювати тільки самостійно. Отже, якщо ви хочете додати до чужої гілки, вам потрібно створити власну "копію" цієї гілки, яка виконує вищевказана команда (ну вона створює вашу гілку і перевіряє її). - Dan Moulding
Якщо це нове віддалене відділення вам може знадобитися git fetch перш ніж робити це так, щоб дізнався про це origin/test - Neil Sarkar
... і ви б це зробили git fetch origin test - Andrew
Помилка: "git checkout: оновлення шляхів несумісні з гілками перемикання. Ви мали намір перевірити origin/test які не можуть бути вирішені, як здійснити? " - Xeoncross
git checkout test НЕ буде працювати в сучасному GIT якщо у вас є кілька пультів, які мають однакову назву гілки. Він не може знати, який з них використовувати. - masukomi


Примітка: З сучасним Git (> = 1.6.6), ви можете просто користуватися

git checkout test

(зверніть увагу, що це "тест", а не "походження / тест") для виконання магічних DWIM-доцільно, і створіть для вас тест місцевого відділення, для якого вхідний потік буде віддаленим відстеженням гілки 'origin / test'.


The * (no branch) в git branch вивід означає, що ви перебуваєте на неназваній гілці, у так званому стані "горіхи" (HEAD безпосередньо спрямовує на фіксацію, а не символічне посилання на деяку локальну гілку). Якщо ви зробили деякі доручення на цій неназваній гілці, ви завжди можете створити локальний відгалуження від поточної фіксації:

git checkout -b test HEAD

1092
2017-11-24 00:17



Не дивно, але ця версія була випущена протягом останніх кількох років - знаючи цей синтаксис, можна заощадити багато часу, оскільки існує багато застарілих документів і коментарів, що крутяться навколо цього, які пропонують старий метод для цього. - Curtis
"сучасна гіта" - для запису, (приблизно), до якої версії ви називаєте? Іноді доводиться працювати над системами, на яких працюють старі дистрибутиви. - Craig McQueen
"сучасний гіт" в цьому контексті є git 1.6.6 - Bobby Norton
@aidan Якщо ви отримаєте відповідь, як error: pathspec 'branch_name' did not match any file(s) known to git. то вам слід спочатку зробити гіт. - Dennis
Використовуючи версію git версії 1.8.3.msysgit.0, і це не працює для мене - не збігався жоден файл, відомий git - я зробив багато викрутки - PandaWood


У такому випадку ви, мабуть, хочете створити локальний test яка відстежує пульт test галузь:

$ git branch test origin/test

У більш ранніх версіях git, вам потрібно було чітко вказати --track опція, але це за замовчуванням, коли ви розгалужуєте віддалену гілку.


478
2017-11-23 14:27



Це створить місцеву філію без переходу на неї. - Alex.Designworks
Хоча я став фатальним: неоднозначне ім'я об'єкта: 'origin / dev' - де найчастіше існує гілка 'dev' на походженні - але я випадково створив гілку з ім'ям origin / dev на моїй машині (у моїх попередніх дурних спробах щоб отримати це право, без сумніву) ... оуч - PandaWood
Це дало мені помилку помилки: не вдалося натиснути деякі посилання на підказку: оновлення були відхилені, тому що натиснута підказка гілки за своїм віддаленим підказкою: аналог. Ознайомтеся з цією гілкою та об'єднайте підказку про віддалені зміни: (напр., "Витягування"), перш ніж натискати знову. Підказка: перегляньте "Примітка щодо швидких вперед" в "git push --help" для деталей. - pal4life
git branch test працює для мене - Isaac Pak


Прийнятий відповідь не працює для вас?

Хоча перша та вибрана відповідь технічно правильно, існує можливість того, що ви ще не знайшли всіх об'єктів та файлів з віддаленого сховища. Якщо це так, ви отримаєте таку помилку:

$ git checkout -b remote_branch origin/remote_branch

фатальний: git checkout: оновлення шляхів несумісні з перемиканням гілок.
  Ви мали намір перевірити "origin / remote_branch", які не можуть бути вирішені як commit?

Рішення

Якщо ви отримуєте це повідомлення, спочатку потрібно зробити git fetch origin де origin це ім'я віддаленого сховища перед запуском git checkout remote_branch. Ось повний приклад із відповідями:

$ git fetch origin
remote: Counting objects: 140, done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 69 (delta 36), reused 66 (delta 33)
Unpacking objects: 100% (69/69), done.
From https://github.com/githubuser/repo-name
   e6ef1e0..5029161  develop    -> origin/develop
 * [new branch]      demo       -> origin/demo
   d80f8d7..359eab0  master     -> origin/master

$ git checkout demo
Branch demo set up to track remote branch demo from origin.
Switched to a new branch 'demo'

Як бачите, працює git fetch origin видалили будь-які віддалені відділення, які ми ще не налаштовані для відстеження на нашому локальному комп'ютері. Звідти, оскільки тепер ми маємо віддалену гілку, ми можемо просто запустити git checkout remote_branch і ми отримаємо переваги віддаленого відстеження.


395
2017-12-07 20:52



Я додам нотатку, якщо у вас окрема гілка локально: переконайтеся, що ви пов'язали це з віддаленим репо за допомогою пункту "git remote add origin [the_path_to_your_repo / repo_name.git]". Потім використовуйте 'git fetch origin', де 'origin' означає сховище походження, з яким ви зв'язали. - elliotrock
git checkout -b newbranch також чудово підходить для 1-етапного створення та перевірки нової гілки на основі поточної гілки. - Linus
Я думаю, що це найновіша версія (вона постійно змінює $ @ #!). Git 2.5.5 Я знайшов єдиний спосіб насправді побачити віддалені відділення були git ls-remote і єдиним способом реально використовувати його є git checkout -b [branch] --track [remote/branch]... і це після  git pull [remote] [branch] працював І.е., він фактично витягнув всю галузь, але все одно не перелічив його. - delicateLatticeworkFever
і коли ця відповідь також не працює, див цей. - eis


Я спробував описане вище рішення, але це не спрацювало. Спробуй це, це працює:

git fetch origin 'remote_branch':'local_branch_name'

Це призведе до віддаленого відгалуження та створення нової локальної гілки (якщо вона ще не існує) з назвою local_branch_nameі відстежувати в ньому віддалений.


176
2017-10-18 05:55



Це спрацювало для мене, коли жоден вихідний каталог git git чи віддалений оновлення git не створили місцеві гілки. Я не знаю чому - Godsmith
Це був самий прямий спосіб досягти того, що мені потрібно, щоб використати віддалену гілку (а не майстер) для створення нової гілки. - Roralee
Працював без проблем, особливо коли клонув одну гілку з віддаленого з декількома гілками. - Alex C
це спрацювало і для мене, де прийняті відповіді та інші високі проголосували не так. Моя версія Git - 2.5.0 - pdepmcp
Хто-небудь має ідею, чому це працює, коли все інше? (Я на git 2.13.0) - Nathan Arthur


Це буде DWIM для віддаленого не названого походження (документація):

$ git checkout -t remote_name/remote_branch

Щоб додати новий пульт, спочатку потрібно виконати наступне:

$ git remote add remote_name location_of_remote
$ git fetch remote_name

Перший говорить Гіта, що віддалений існує, другий отримує копії.


100
2018-04-27 22:37





Використання:

git checkout -b <BRANCH-NAME> <REMOTE-NAME>/<BRANCH-NAME>

Інші відповіді не працюють з сучасними Git у моїй доброякісній справі. Можливо, вам доведеться спочатку потягнути, якщо віддалений підрозділ є новим, але я не перевірив цей випадок.


89
2018-02-21 10:58



Ви розумієте, що це витяг з цього відповісти - Thomas Ayoub
Дивлячись на це зараз, вони перекриваються. Лише моя є стислою і говорить вам, що робити, а не розповідати історію. Я припускаю, що це може бути більш корисним, отже, особливо для сучасних версій Git. Ви можете зменшити його, якщо ви вважаєте, що це погана відповідь. - matanster