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

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

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

Я пробовал:

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

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

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

Ответы

Ответ 1

Обновить

Ответ Якуба на самом деле улучшает это. С версиями 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

Ответ 2

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

Ответ 3

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

$ git branch test origin/test

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

Ответ 4

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

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

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

Ответ 5

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

git fetch origin 'remote_branch':'local_branch_name'

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

Ответ 6

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

$ git checkout -t remote_name/remote_branch

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

$ git remote add remote_name location_of_remote
$ git fetch remote_name

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

Ответ 7

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

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

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

Ответ 8

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

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

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

git fetch && git checkout test

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

git fetch

Ответ 9

Чтобы клонировать репозиторий 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.

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

Ответ 10

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

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

или

git fetch
git checkout -b local_branch_name origin/branch_name

Ответ 11

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

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

git fetch origin branch_name

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

git checkout -b branch_name origin/branch_name

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

Ответ 12

Команды

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

Ответ 13

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

git checkout --track origin/other_remote_branch

Ответ 14

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

Ответ 15

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

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

Ответ 16

Я застрял в ситуации, когда произошла 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

Ответ 17

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

git remote update

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

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

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

Ответ 18

git fetch && git checkout your-branch-name

Ответ 19

Просто запустите 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, в которой при удалении такой неоднозначности указывается значение удаленного управления по умолчанию.

Ответ 20

Команда 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

Ответ 21

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

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.

Ответ 22

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

git fetch

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

git checkout BranchName

Ответ 23

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

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

Например:

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

Ответ 24

Вы можете начать отслеживать все удаленные ветки со следующим 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 ;

Ответ 25

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

   git fetch --all

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

   git branch -r

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

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

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

   git checkout master

Ответ 26

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

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'

Ответ 27

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

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

enter image description here

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

$ git checkout -b '#9773' origin/'#9773'

Ответ 28

Для нас, кажется, конфигурация remote.origin.fetch создала проблему. Поэтому мы не могли видеть никаких других удаленных ветвей, кроме master, поэтому git fetch [--all] не помогло. Ни git checkout mybranch, ни git checkout -b mybranch --track origin/mybranch не работали, хотя это, конечно, было на расстоянии.

Предыдущая конфигурация позволяла получать только master:

$ git config --list | grep fetch
remote.origin.fetch=+refs/heads/master:refs/remotes/origin/master

Исправьте это с помощью * и получите новую информацию из источника:

$ git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'

$ git fetch
...
 * [new branch] ...
...

Теперь мы можем git checkout локально удаленную ветвь.

Понятия не имею, как этот конфиг оказался в нашем локальном репо.

Ответ 29

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

git fetch --all

затем оформить заказ в филиале:

git checkout test