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

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

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

Я пробовал:

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

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

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

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 и создайте локальную ветвь "test" для вас, для которой вверх по течению будет ветвь удаленного отслеживания "origin/test".


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

git checkout -b test HEAD

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

$ git branch test origin/test

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


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

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

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


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

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 в моем доброкачественном случае. Возможно, вам придется потянуть сначала, если удаленная ветка новая, но я не проверял этот случай.


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

вам нужно 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. Обновите список локальных филиалов из origin с помощью:

git remote update

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

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

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


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

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


на 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 проверка тест, который ничего не делает

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

Fetch origin и проверка ветви.

git fetch origin && git checkout branch_name 

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

git fetch
git checkout test

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

git checkout --track origin/test

или

git checkout -b test origin/test

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