it-swarm.com.ru

Как проверить удаленную ветку Git?

Кто-то отправил ветку с именем test с git Push Origin test в общий репозиторий. Я вижу ветку с git branch -r.

Сейчас я пытаюсь проверить удаленную ветку test.

Я пробовал:

  • git checkout test, который ничего не делает

  • git checkout Origin/test дает * (no branch). Что сбивает с толку. Как я могу быть на "нет ветви"?

Как проверить удаленную ветку Git?

6157
Juri Glass

Обновление

ответ Якуба на самом деле это улучшает. С версиями Git ≥ 1.6.6 с одним пультом вы можете просто:

git fetch
git checkout test

Как указывает пользователь masukomi в комментарии, git checkout test НЕ будет работать в современном git, если у вас несколько пультов. В этом случае используйте

git checkout -b test <name of remote>/test

или стенография

git checkout -t <name of remote>/test

Старый ответ

Прежде чем вы сможете начать локальную работу с удаленной веткой, вам нужно получить ее, как указано в ответах ниже.

Чтобы получить ветку, вам просто необходимо:

git fetch Origin

Это принесет вам все удаленные ветви. Вы можете увидеть ветки, доступные для оформления заказа с:

git branch -v -a

Теперь, когда у вас есть удаленные ветви, вам нужно проверить интересующую вас ветку, предоставив вам локальную рабочую копию:

git checkout -b test Origin/test
8492
hallski

Sidenote: с современным Git (> = 1.6.6 ), Вы можете использовать только

git checkout test

(обратите внимание, что это 'test', а не 'Origin/test'), чтобы выполнить магическое WW_ - mery и создать для вас локальную ветвь 'test', для которой восходящая ветвь будет ветвью удаленного слежения ' Происхождение/тест.


Вывод * (no branch) в git branch означает, что вы находитесь в неназванной ветви, в так называемом состоянии "отдельного HEAD" (HEAD указывает непосредственно на фиксацию, и не является символической ссылкой на некоторую локальную ветвь). Если вы сделали некоторые коммиты в этой безымянной ветви, вы всегда можете создать локальную ветку вне текущей фиксации

git checkout -b test HEAD
1197
Jakub Narębski

В этом случае вы, вероятно, захотите создать локальную ветку test, которая отслеживает удаленную ветку test:

$ git branch test Origin/test

В более ранних версиях git вам требовалась явная опция --track, но теперь она используется по умолчанию при переходе от удаленной ветви.

529
ndim

Принятый ответ у вас не работает?

Хотя первый и выбранный ответ технически является правильным , существует вероятность того, что вы еще не получили все объекты и ссылки из удаленного репозитория. Если это так, вы получите следующую ошибку:

$ git checkout -b remote_branch Origin/remote_branch

fatal: git checkout: обновление путей несовместимо с переключением веток.
Вы намеревались проверить 'Origin/remote_branch', который не может быть разрешен как коммит?

Решение

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

442
Corey Ballou

Я попробовал вышеуказанное решение, но оно не сработало. Попробуйте это, это работает:

git fetch Origin 'remote_branch':'local_branch_name'

Это приведет к извлечению удаленной ветви и созданию новой локальной ветви (если она еще не существует) с именем local_branch_name и отслеживанию удаленной ветви в ней.

229
Sahil kalra

Это будет DWIM для удаленного устройства без имени Origin ( документация ):

$ git checkout -t remote_name/remote_branch

Чтобы добавить новый пульт, сначала нужно сделать следующее:

$ git remote add remote_name location_of_remote
$ git fetch remote_name

Первый говорит Git, что удаленный существует, второй получает коммиты.

105
tacaswell

Использование:

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

Другие ответы не работают с современным Git в моем случае. Возможно, вам придется сначала потянуть, если удаленная ветвь новая, но я не проверял этот случай.

100
matanster

ОК, ответ прост ... Вы в основном видите ветку, но у вас еще нет локальной копии! ...

Вам нужно fetch ветку ...

Вы можете просто получить, а затем оформить заказ в ветке, используя команду из одной строки ниже, чтобы сделать это:

git fetch && git checkout test

Я также создал изображение ниже, чтобы вы могли поделиться своими различиями, посмотреть, как работает fetch, а также чем он отличается от pull:

git fetch

79
Alireza

Чтобы клонировать Git-репозиторий, выполните:

git clone <either ssh url /http url>

Приведенная выше команда проверяет все ветви, но будет инициализирована только ветвь master. Если вы хотите оформить заказ в других филиалах, сделайте:

git checkout -t Origin/future_branch (for example)

Эта команда проверяет удаленную ветку, и имя вашей локальной ветви будет таким же, как и у удаленной ветви.

Если вы хотите переопределить название вашего местного отделения при оформлении заказа:

git checkout -t -b enhancement Origin/future_branch

Теперь имя вашей локальной ветви - enhancement, а имя вашей удаленной ветви - future_branch.

документация

52
Madhan Ayyasamy

Ты можешь попробовать

git fetch remote
git checkout --track -b local_branch_name Origin/branch_name

или же

git fetch
git checkout -b local_branch_name Origin/branch_name
34
uma

Для начала нужно сделать:

git fetch # Если вы не знаете название филиала

git fetch Origin branch_name

Во-вторых, вы можете проверить удаленный филиал в вашей локальной сети:

git checkout -b branch_name Origin/branch_name

-b создаст новую ветку с указанным именем из выбранной вами удаленной ветки.

28
Mohideen bin Mohammed

Команды

git fetch --all
git checkout -b <ur_new_local_branch_name> Origin/<Remote_Branch_Name>

равны

 git fetch --all

а потом

 git checkout -b fixes_for_dev Origin/development

Оба создадут latest fixes_for_dev из development

27
sreekumar

Я использую следующую команду:

git checkout --track Origin/other_remote_branch
25
priyankvex

Если ветка находится на чем-то отличном от удаленного Origin, я хотел бы сделать следующее:

$ git fetch
$ git checkout -b second/next upstream/next

Это извлечет ветку next на пульте upstream в локальную ветвь с именем second/next. Это означает, что если у вас уже есть локальная ветка с именем next, она не будет конфликтовать.

$ git branch -a
* second/next
  remotes/Origin/next
  remotes/upstream/next
23
Kris

ни один из этих ответов не работал для меня. это сработало:

git checkout -b feature/branch remotes/Origin/feature/branch

16
brianyang

git branch -r говорит, что имя объекта недопустимо, потому что это имя ветки отсутствует в списке локальных веток Git. Обновите свой локальный список филиалов в Origin:

git remote update

А затем попробуйте снова проверить удаленную ветку.

Это сработало для меня.

Я полагаю, что git fetch задействует все удаленные ветви, что не то, что хотел оригинальный постер.

16
webdevguy

git fetch && git checkout your-branch-name

15
Inder Kumar Rathore

Просто запустите git checkout с именем удаленной ветви. Git будет автоматически создавать локальную ветвь, которая отслеживает удаленную:

git fetch
git checkout test

Однако, если это имя ветки найдено более чем в одном пульте, это не сработает, так как Git не знает, какой использовать. В этом случае вы можете использовать либо:

git checkout --track Origin/test

или же

git checkout -b test Origin/test

В 2.19 Git изучил конфигурацию checkout.defaultRemote , которая указывает удаленное устройство по умолчанию при разрешении такой неоднозначности.

13
Eugene Yarmash

Я застрял в ситуации, увидев error: pathspec 'desired-branch' did not match any file(s) known to git. для всех предложений выше. Я на git версии 1.8.3.1.

Так что это работал для меня:

git fetch Origin desired-branch
git checkout -b desired-branch FETCH_HEAD

Объяснение этому заключается в том, что я заметил, что при извлечении удаленной ветви она была выбрана в FETCH_HEAD:

$ git fetch Origin desired-branch
From github.com:MYTEAM/my-repo
    * branch            desired-branch -> FETCH_HEAD
13
alisa

Команда git remote show <Origin name> выведет список всех веток (включая неотслеживаемые). Затем вы можете найти имя удаленной ветви, которое вам нужно получить.

Пример:

$ git remote show Origin

Используйте эти шаги для извлечения удаленных веток:

git fetch <Origin name> <remote branch name>:<local branch name>
git checkout <local branch name > (local branch name should the name that you given fetching)

Пример:

$ git fetch Origin test:test
$ git checkout test
10
Thushan

Другие парни и девушки дают решения, но, может быть, я могу сказать вам, почему.

git checkout test, который ничего не делает

Does nothing не равен doesn't work, поэтому я предполагаю, что когда вы набираете "git checkout test" в своем терминале и нажимаете клавишу ввода, сообщение не появляется и ошибка не возникает. Я прав?

Если ответ "да", я могу сказать вам причину.

Причина в том, что в вашем рабочем дереве есть файл (или папка) с именем "test".

Когда git checkout xxx проанализирован,

  1. Git сначала смотрит на xxx как имя ветки, но нет ни одной ветки с именем test.
  2. Затем Git думает, что xxx - это путь, и, к счастью (или к сожалению), существует файл с именем test. Таким образом, git checkout xxx означает отменить любую модификацию в файле xxx.
  3. Если нет файла с именем xxx, то Git попытается создать xxx в соответствии с некоторыми правилами. Одним из правил является создание ветви с именем xxx, если существует remotes/Origin/xxx.
8
oldman

чтобы получить вновь созданные ветки

git fetch

чтобы перейти в другую ветку

git checkout BranchName
7
Hasib Kamal

Вы можете начать отслеживать все удаленные ветки с помощью следующего скрипта Bash:

#!/bin/bash
git fetch --all
for branch in `git branch -r --format="%(refname:short)" | sed 's/Origin\///'`
  do git branch -f --track "$branch" "Origin/$branch"
done

Вот также однострочная версия:

git fetch --all; for branch in `git branch -r --format="%(refname:short)" | sed 's/Origin\///'`; do git branch --track "$branch" "Origin/$branch" ; done ;
6
OzzyCzech

Получить с пульта и проверить филиал.

git fetch <remote_name> && git checkout <branch_name> 

Например.:

git fetch Origin && функция git checkout/XYZ-1234-Add-alerts

6
Pranav

Если имя удаленной ветви начинается со специальных символов, вам нужно использовать одинарные кавычки в команде checkout, иначе git не будет знать, о какой ветке вы говорите.

Например, я попытался извлечь удаленную ветку с именем #9773, но команда не работала должным образом, как показано на рисунке ниже:

enter image description here

По какой-то причине мне было интересно, может ли острый символ (#) иметь к этому какое-то отношение, а затем я попытался заключить имя ветви в одинарные кавычки, например, '#9773', а не просто #9773, и все заработало нормально.

$ git checkout -b '#9773' Origin/'#9773'
1
Ulysses Alves

Пожалуйста, следуйте команде, чтобы создать пустую папку. Введите это и используйте эту команду:

saifurs-Mini:YO-iOS saifurrahman$ git clone your_project_url
Cloning into 'iPhoneV1'...
remote: Counting objects: 34230, done.
remote: Compressing objects: 100% (24028/24028), done.
remote: Total 34230 (delta 22212), reused 15340 (delta 9324)
Receiving objects: 100% (34230/34230), 202.53 MiB | 294.00 KiB/s, done.
Resolving deltas: 100% (22212/22212), done.
Checking connectivity... done.
saifurs-Mini:YO-iOS saifurrahman$ cd iPhoneV1/
saifurs-Mini:iPhoneV1 saifurrahman$ git checkout 1_4_0_content_discovery
Branch 1_4_0_content_discovery set up to track remote branch 1_4_0_content_discovery from Origin.
Switched to a new branch '1_4_0_content_discovery'
1
Mehedi Hasan