Как проверить удаленную ветку 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 и создать локальную ветвь "тест" для вас, для которого вверх по течению будет удаленное отслеживание ветви "происхождение/тест".
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_branchfatal: 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, выполните:
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
если ветка находится на чем-то другом, чем
originremote мне нравится делать следующее:$ 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 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разобран,
- ГИТ смотрит на
xxxкак имя ветви сначала, но нет никакой ветви с именем test.- тогда ГИТ думает
xxx- это путь и к счастью (или к сожалению), есть файл с именем test. Так чтоgit checkout xxxозначает отбросить любые изменения в .- если нет файла с именем
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 checkoutС именем удаленной ветви. ГИТ будет автоматически создать локальная ветвь, которая отслеживает удаленную:git fetch git checkout testоднако, если это имя ветви найдено в более чем одном удаленном устройстве, это не будет работать, поскольку Git не знает, что использовать. В этом случае вы можете использовать:
git checkout --track origin/testили
git checkout -b test origin/testна 2.19, мерзавец узнал
checkout.defaultRemoteконфигурация, которая определяет удаленный доступ к по умолчанию при разрешении такой двусмысленности.
