Как проверить удаленную ветку 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_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, выполните:
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
если ветка находится на чем-то другом, чем
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 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
конфигурация, которая определяет удаленный доступ к по умолчанию при разрешении такой двусмысленности.