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

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

Теперь я пытаюсь проверить удаленную ветвь test.

Я пробовал:

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

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

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

+6138
23 нояб. '09 в 14:23
источник поделиться
27 ответов

Обновить

Ответ Якуба на самом деле улучшает это. С версиями 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
+8468
23 нояб. '09 в 14:26
источник

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

git checkout test

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


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

git checkout -b test HEAD
+1195
24 нояб. '09 в 0:17
источник

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

$ git branch test origin/test

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

+529
23 нояб. '09 в 14:27
источник

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

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

$ git checkout -b remote_branch origin/remote_branch

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

+442
07 дек. '12 в 20:52
источник

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

git fetch origin 'remote_branch':'local_branch_name'

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

+229
18 окт. '13 в 5:55
источник

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

$ git checkout -t remote_name/remote_branch

Чтобы добавить новый пульт дистанционного управления, вам необходимо сделать следующее:

$ git remote add remote_name location_of_remote
$ git fetch remote_name

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

+105
27 апр. '12 в 22:37
источник

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

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

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

+100
21 февр. '16 в 10:58
источник

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

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

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

git fetch && git checkout test

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

git fetch

+79
05 сент. '17 в 14:20
источник

Чтобы клонировать репозиторий 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
21 янв. '13 в 10:04
источник

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

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
24 мар. '14 в 13:11
источник

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

git fetch # Если вы не знаете имя ветки

git fetch origin branch_name

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

git checkout -b branch_name origin/branch_name

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

+28
18 мая '17 в 13:55
источник

Команды

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
21 апр. '16 в 19:10
источник

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

git checkout --track origin/other_remote_branch
+25
06 сент. '17 в 14:41
источник

Если ветка находится на чем-то, кроме удаленного 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
01 мар. '13 в 10:00
источник

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

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

+16
10 июл. '18 в 2:11
источник

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

git remote update

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

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

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

+16
06 июн. '13 в 12:21
источник

git fetch && git checkout your-branch-name

+15
26 мар. '14 в 7:00
источник

Просто запустите 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
13 сент. '18 в 12:21
источник

Я застрял в ситуации, когда произошла 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
10 окт. '18 в 21:52
источник

Команда 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
07 янв. '18 в 13:12
источник

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

git проверочный тест, который ничего не делает

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

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

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

Когда git checkout xxx разобрался,

  • git сначала смотрит на xxx как имя ветки, но нет ветки с именем test.
  • Тогда Git думает, что xxx - это путь, и к счастью (или, к сожалению), есть файл с именем test. Поэтому git checkout xxx означает отменить любую модификацию в файле xxx.
  • Если нет файла с именем xxx, то Git попытается создать xxx в соответствии с некоторыми правилами. Одним из правил является создание ветки с именем xxx, если существует remotes/origin/xxx.
+8
10 июл. '17 в 7:45
источник

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

git fetch

Переключиться на другую ветку

git checkout BranchName
+7
15 мар. '18 в 8:49
источник

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

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

Например:

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

+6
21 мая '18 в 11:33
источник

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

#!/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
11 авг. '17 в 12:06
источник

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

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

enter image description here

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

$ git checkout -b '#9773' origin/'#9773'
+1
07 нояб. '18 в 11:17
источник

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

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
01 янв. '15 в 10:31
источник

Используйте fetch чтобы вытащить весь ваш пульт

   git fetch --all

Для просмотра удаленных веток:

   git branch -r

Для списка всех ваших веток

   git branch -l
   >>outpots like-
     * develop
       test
       master

Оформить заказ/сменить ветку

   git checkout master
0
24 мая '19 в 8:51
источник

Посмотрите другие вопросы по меткам или Задайте вопрос