Кто-то нажал ветвь с именем test
с git push origin test
в общий репозиторий. Я вижу ветку с git branch -r
.
Теперь я пытаюсь проверить удаленную ветвь test
.
Я пробовал:
git checkout test
, который ничего не делает
git checkout origin/test
дает * (no branch)
. Это сбивает с толку. Как я могу быть на "никакой ветке"?
Как проверить удаленную ветвь Git?
Ответ Якуба на самом деле улучшает это. С версиями Git ≥ 1.6.6 с одним пультом вы можете просто:
git fetch
git checkout test
Как отмечает пользователь masukomi в комментарии, git checkout test
НЕ будет работать в современном git, если у вас несколько пультов. В этом случае используйте
git checkout -b test <name of remote>/test
или стенография
git checkout -t <name of remote>/test
Прежде чем вы сможете начать локальную работу с удаленной веткой, вам нужно получить ее, как указано в ответах ниже.
Чтобы получить ветку, вам просто нужно:
git fetch origin
Это принесет вам все удаленные ветки. Вы можете увидеть ветки, доступные для оформления заказа с:
git branch -v -a
Теперь, когда у вас есть удаленные ветки, вам нужно проверить интересующую вас ветку, предоставив вам локальную рабочую копию:
git checkout -b test origin/test
git fetch
прежде чем делать это, чтобы git знал о origin/test
Sidenote: С современным Git ( >= 1.6.6) вы можете использовать только
git checkout test
(обратите внимание, что это 'test' not 'origin/test') для выполнения магического DWIM -mery и создайте для вас локальную ветвь 'test', для которой восходящий поток был бы ветвью удаленного отслеживания "origin/test".
Вывод * (no branch)
in git branch
означает, что вы находитесь в неназванной ветки в так называемом состоянии "отсоединенный HEAD" (HEAD указывает непосредственно на фиксацию и не является символической ссылкой на некоторую локальную ветвь). Если вы сделали некоторые коммиты в этой неназванной ветки, вы всегда можете создать локальную ветвь с текущей фиксацией:
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", который не может быть разрешен как 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 checkout -b newbranch
также отлично git checkout -b newbranch
для создания одного шага и извлечения новой ветви на основе текущей ветви.
Я попробовал вышеуказанное решение, но оно не сработало. Попробуйте это, он работает:
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
:
test
локальной ветки
Чтобы клонировать репозиторий 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
--track
больше не требуется в новых версиях git, потому что он установлен по умолчанию, как объяснялось в предыдущем ответе .
Во-первых, вам нужно сделать:
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
, мне нравится делать следующее:
$ 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 remote update
также извлекает все удаленные ветви .
ни один из этих ответов не работал для меня. это сработало:
git checkout -b feature/branch remotes/origin/feature/branch
git
при вызове команды git branch -a
, но я не был уверен, поэтому я просто использовал приложения git checkout -b apps/FEATURE/branch origin/apps/FEATURE/branch
и оказалось, что она работает. Сообщение: Branch 'apps/FEATURE/branch' set up to track remote branch 'apps/FEATURE/epicBranch' from 'origin'. Switched to a new branch 'apps/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 clone -b release --single-branch --depth 5 https://github.com/user/repo.git
указана $ git remote show origin
не перечислены все удаленные ветви с одной клонированной веткой хранилища.
Другие ребята и девушки дают решения, но, может быть, я могу сказать вам, почему.
git проверочный тест, который ничего не делает
Does nothing
не равен doesn't work
, поэтому, полагаю, когда вы вводите 'git checkout test' в своем терминале и нажимаете клавишу ввода, сообщение не появляется и ошибки не возникает. Я прав?
Если ответ "да", я могу сказать вам причину.
Причина в том, что в вашем дереве есть файл (или папка) с именем "test".
Когда git checkout xxx
разобрался,
xxx
как имя ветки, но нет ветки с именем test.xxx
- это путь, и к счастью (или, к сожалению), есть файл с именем test. Поэтому git checkout xxx
означает отменить любую модификацию в файле xxx
.xxx
, то Git попытается создать xxx
в соответствии с некоторыми правилами. Одним из правил является создание ветки с именем xxx
, если существует remotes/origin/xxx
. Я застрял в ситуации, когда произошла error: pathspec 'desired-branch' did not match any file(s) known to git.
для всех предложений выше. Я на git версии 1.8.3.1.
Так что это сработало для меня:
git fetch origin desired-branch
git checkout -b desired-branch FETCH_HEAD
Объяснение этому заключается в том, что я заметил, что при извлечении удаленной ветки она была выбрана в FETCH_HEAD:
$ git fetch origin desired-branch
From github.com:MYTEAM/my-repo
* branch desired-branch -> FETCH_HEAD
Просто запустите git checkout
с именем удаленной ветки. Git автоматически создаст локальную ветку, которая отслеживает удаленную:
git fetch
git checkout test
Однако, если это имя ветки найдено более чем в одном пульте, это не сработает, так как Git не знает, что использовать. В этом случае вы можете использовать либо:
git checkout --track origin/test
или же
git checkout -b test origin/test
В 2.19 Git изучил конфигурацию checkout.defaultRemote
, в которой при удалении такой неоднозначности указывается значение удаленного управления по умолчанию.
Чтобы получить вновь созданные ветки
git fetch
Переключиться на другую ветку
git checkout BranchName
Вы можете начать отслеживать все удаленные ветки со следующим Bash script:
#!/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 origin && git checkout branch_name
Если имя удаленной ветки начинается со специальных символов, вам нужно использовать одинарные кавычки в команде checkout, иначе git не будет знать, о какой ветке вы говорите.
Например, я попытался извлечь удаленную ветку с именем #9773
но команда не работала должным образом, как показано на рисунке ниже:
По какой-то причине мне стало интересно, может ли острый символ (#) иметь к этому какое-то отношение, а затем я попытался заключить имя ветки в одинарные кавычки, например, '#9773'
а не просто #9773
, и это сработало нормально.
$ git checkout -b '#9773' origin/'#9773'
#
используется для комментариев, поэтому все, что после #
будет игнорироваться. Это вещь оболочки, а не что-то конкретное для git. Использование кавычек обратной косой черты до #
должно быть достаточно.