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


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

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

Я пробовал:

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

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

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

24 5483

24 ответа:

обновление

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

git fetch
git checkout test

(пользователь masukomi указывает ниже, что 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

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

git checkout test

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


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

git checkout -b test HEAD

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

$ git branch test origin/test

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

принято отвечать не работает для вас?

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

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

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

git fetch origin 'remote_branch':'local_branch_name'

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

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

$ git checkout -t remote_name/remote_branch

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

$ git remote add remote_name location_of_remote
$ git fetch remote_name

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

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

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

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

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

вам нужно fetch филиала...

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

git fetch && git checkout test

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

git fetch

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

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

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

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

или

git fetch
git checkout -b local_branch_name origin/branch_name

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

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

git fetch origin branch_name

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

git checkout -b branch_name origin/branch_name

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

команды

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

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

git checkout --track origin/other_remote_branch

если ветка находится на чем-то другом, чем origin remote мне нравится делать следующее:

$ 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

git fetch && git checkout your-branch-name

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

git remote update

а затем попробуйте проверить свой удаленный филиал.

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

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

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

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

The 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

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

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

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

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

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

, когда git checkout xxx разобран,

  1. ГИТ смотрит на xxx как имя ветви сначала, но нет никакой ветви с именем test.
  2. тогда ГИТ думает xxx - это путь и к счастью (или к сожалению), есть файл с именем test. Так что git checkout xxx означает отбросить любые изменения в .
  3. если нет файла с именем xxx либо, то git будет пытаться создать xxx по некоторым правилам. Одно из правил это создать ветку с именем xxx Если .

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

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

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'

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

git fetch

перейти в другую ветку

git checkout BranchName

извлечение источника и проверка ветви.

git fetch origin && git checkout branch_name 

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

git fetch
git checkout test

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

git checkout --track origin/test

или

git checkout -b test origin/test

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