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