Кто-то отправил ветку test
с git push origin test
общим хранилищем. Я вижу ветку с git branch -r
.
Сейчас я пытаюсь проверить удаленную test
ветку.
Я пробовал:
git checkout test
который ничего не делаетgit checkout origin/test
дает* (no branch)
. Что сбивает с толку. Как я могу быть на "нет ветви"?
Как проверить удаленную ветку Git?
git
git-checkout
remote-branch
Юри Гласс
источник
источник
upstream
, а не простоorigin
, и каждый рекомендуемый ответ не делает ничего полезного (каламбур). РЕДАКТИРОВАТЬ - извините, множество предложений, содержащихся в топ-2 ответов были бесполезны; 3-й (git branch test origin/test
) это то, что работает. Рад, что в топ-2 количество голосов в 20 раз больше ...Ответы:
Обновить
Ответ Якуба на самом деле улучшает это. С версиями Git ≥ 1.6.6 с одним пультом вы можете просто:
Как указывает пользователь masukomi в комментарии,
git checkout test
он не будет работать в современном git, если у вас есть несколько пультов. В этом случае используйтеили стенография
Старый ответ
Прежде чем вы сможете начать локальную работу с удаленной веткой, вам нужно получить ее, как указано в ответах ниже.
Чтобы получить ветку, вам просто необходимо:
Это принесет вам все удаленные ветви. Вы можете увидеть ветки, доступные для оформления заказа с:
Теперь, когда у вас есть удаленные ветви, вам нужно проверить интересующую вас ветку, предоставив вам локальную рабочую копию:
источник
git fetch
это сделать, чтобы git был в курсеorigin/test
git fetch origin test
origin/test
оформить заказ, который не может быть разрешен как коммит?»git checkout test
НЕ будет работать в современном git, если у вас есть несколько пультов с одинаковым именем ветви . Он не может знать, какой из них использовать.Sidenote: С современным Git (> = 1.6.6 ) вы можете использовать только
(обратите внимание, что это «тест», а не «происхождение / тест»), чтобы выполнить магическую DWIM- метрику и создать для вас локальную ветвь «тест», для которой восходящая ветвь будет ветвью удаленного отслеживания «происхождение / тест».
* (no branch)
Вgit branch
выходных означают , что вы находитесь на безымянной отрасли, в так называемом «отдельностоящий HEAD» состоянии (точки ГОЛОВЫ непосредственно совершать, а не символическая ссылка на какой - то местный филиал). Если вы сделали некоторые коммиты в этой безымянной ветви, вы всегда можете создать локальную ветку вне текущей фиксации:** РЕДАКТИРОВАТЬ (редактором, а не автором) **
Я нашел комментарий, похороненный ниже, который, кажется, модернизирует этот ответ:
акцент на
git checkout origin/test
источник
error: pathspec 'branch_name' did not match any file(s) known to git.
сначала вы должны сделать git fetch.В этом случае вы, вероятно, захотите создать локальную
test
ветку, которая отслеживает удаленнуюtest
ветку:В более ранних версиях
git
вам требовался явный--track
параметр, но теперь он используется по умолчанию при переходе от удаленной ветви.источник
Принятый ответ не работает для вас?
Хотя первый и выбранный ответ технически верен , есть вероятность, что вы еще не получили все объекты и ссылки из удаленного репозитория. Если это так, вы получите следующую ошибку:
Решение
Если вы получили это сообщение, перед запуском вы должны сначала указать
git fetch origin
гдеorigin
находится имя удаленного репозиторияgit checkout remote_branch
. Вот полный пример с ответами:Как видите, во время работы были
git fetch origin
получены любые удаленные ветви, которые мы еще не настроили для отслеживания на нашей локальной машине. Оттуда, поскольку теперь у нас есть ссылка на удаленную ветку, мы можем просто запустить ее,git checkout remote_branch
и мы получим преимущества удаленного отслеживания.источник
git checkout -b newbranch
также отлично подходит для создания одного шага и извлечения новой ветви на основе текущей ветви.git ls-remote
это единственный способgit checkout -b [branch] --track [remote/branch]
... и это после работыgit pull [remote] [branch]
. То есть фактически вытянул всю ветку, но все равно не перечислил бы ее.git fetch other_remote only_branch
, вы все еще получаетеfatal
ошибку. Вы должныgit fetch other_remote
без названия филиала. Странный дизайн.Я попробовал вышеуказанное решение, но оно не сработало. Попробуйте это, это работает:
Это приведет к извлечению удаленной ветви и созданию новой локальной ветви (если она еще не существует) с именем
local_branch_name
и отслеживанию удаленной ветви в ней.источник
Это будет DWIM для удаленного безымянного источника ( документация ):
Чтобы добавить новый пульт, сначала нужно сделать следующее:
Первый сообщает Git, что удаленный существует, второй получает коммиты.
источник
Использование:
Другие ответы не работают с современным Git в моем случае. Возможно, вам придется сначала потянуть, если удаленная ветвь новая, но я не проверял этот случай.
источник
Хорошо , ответ прост ... Вы в основном видите ветку, но у вас еще нет локальной копии! ...
Тебе нужно
fetch
в ветку ...Вы можете просто получить, а затем оформить заказ в ветке, используя команду из одной строки ниже, чтобы сделать это:
Я также создал изображение ниже, чтобы вы могли поделиться своими различиями, посмотреть, как это
fetch
работает, а также чем оно отличаетсяpull
:источник
test
выглядит как новая ветка, поэтому вряд ли она будет присутствовать локально. В противном случае вы можете сделать это проще с помощью однойgit pull
команды.fetch
безpull
изменений отпусков в извлеченной копии , но не в местном отделении, ведущие к местному отделению не в последнюю дату?Чтобы клонировать Git-репозиторий, выполните:
Приведенная выше команда проверяет все ветви, но только
master
ветвь будет инициализирована. Если вы хотите оформить заказ в других филиалах, сделайте:Эта команда проверяет удаленную ветку, и имя вашей локальной ветви будет таким же, как и у удаленной ветви.
Если вы хотите переопределить название вашего местного отделения при оформлении заказа:
Теперь имя вашей локальной ветки есть
enhancement
, а имя вашей удаленной веткиfuture_branch
.Документация
источник
master
, это не будет работать.Ты можешь попробовать
или
источник
--track
в более новых версиях git больше не требуется, потому что он установлен по умолчанию, как объяснялось в предыдущем ответе .Во-первых, вам нужно сделать:
git fetch
# Если вы не знаете название ветвиВо-вторых, вы можете проверить удаленный филиал в вашей локальной сети:
-b
создаст новую ветку с указанным именем из выбранной вами удаленной ветки.источник
Я использую следующую команду:
источник
команды
равны
а потом
Оба создадут
latest fixes_for_dev
изdevelopment
источник
Если ветка находится на чем-то другом, а не на
origin
удаленном, я хотел бы сделать следующее:Это извлечет
next
ветку наupstream
удаленном узле в локальную ветвь с именемsecond/next
. Это означает, что если у вас уже есть локальная ветка с именем next, она не будет конфликтовать.источник
git fetch && git checkout your-branch-name
источник
ни один из этих ответов не работал для меня. это сработало:
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'
Я застрял в ситуации, видя
error: pathspec 'desired-branch' did not match any file(s) known to git.
все предложения выше. Я на git версии 1.8.3.1.Так что это сработало для меня :
Объяснение этому заключается в том, что я заметил, что при извлечении удаленной ветви она была выбрана в FETCH_HEAD:
источник
Просто запустите
git checkout
с именем удаленной ветви. Git автоматически создаст локальную ветку, которая отслеживает удаленную:Однако, если это имя ветки найдено более чем в одном пульте, это не сработает, так как Git не знает, какой использовать. В этом случае вы можете использовать либо:
или
В 2.19 Git изучил
checkout.defaultRemote
конфигурацию, которая указывает удаленное устройство по умолчанию при разрешении такой неоднозначности.источник
git branch -r
говорит, что имя объекта недопустимо, потому что это имя ветки отсутствует в списке локальных веток Git. Обновите ваш локальный список филиалов от источника:А затем попробуйте снова проверить удаленную ветку.
Это сработало для меня.
Я считаю, что
git fetch
тянет во всех удаленных ветвях, что не то, что хотел оригинальный плакат.источник
git remote update
также получит все удаленные ветки .git remote show <origin name>
выведет список всех ветвей (включая не отслеживаемые). Затем вы можете найти имя удаленной ветви, которое вам нужно получить.Пример:
Используйте эти шаги для извлечения удаленных веток:
Пример:
источник
$ git clone -b release --single-branch --depth 5 https://github.com/user/repo.git
указана информация,$ git remote show origin
что не перечислены все удаленные ветви с клонированными репозиториями с одной веткой.Получить с пульта и проверить филиал.
Например:
источник
Другие парни и девушки дают решения, но, может быть, я могу сказать вам, почему.
Does nothing
не равноdoesn't work
, так что я думаю, когда вы наберете «git checkout test» в своем терминале и нажмете клавишу ввода, сообщение не появится и не возникнет ошибка. Я прав?Если ответ «да», я могу сказать вам причину.
Причина в том, что в вашем рабочем дереве есть файл (или папка) с именем «test».
Когда
git checkout xxx
разбирается,xxx
Сначала Git выглядит как имя ветки, но нет ни одной ветки с именем test.xxx
это путь, и, к счастью (или, к сожалению), существует файл с именем test. Такgit checkout xxx
значит откажитесь от любой модификации вxxx
файле.xxx
, Git попытается создать файлxxx
согласно некоторым правилам. Одним из правил является создание ветки с именем,xxx
если онаremotes/origin/xxx
существует.источник
Чтобы получить вновь созданные филиалы
Переключиться на другую ветку
источник
Вы можете начать отслеживать все удаленные ветви с помощью следующего скрипта Bash:
Вот также однострочная версия:
источник
git checkout -b "Branch_name" [B означает Создать локальную ветку]
git branch --all
git checkout -b "Название вашей ветки"
мерзавец ветка
успешно оформить заказ из главной ветки в ветку разработчика
источник
чтобы получить все удаленные ветки, используйте это:
затем оформить заказ в филиал:
источник
Используйте,
fetch
чтобы вытащить весь ваш пультДля просмотра удаленных филиалов:
Для списка всех ваших филиалов
Оформить заказ / сменить ветку
источник
git branch -l
и удаленной ветки не показывалось.git pull --all
илиgit fetch --all
git branch -l
пока показывает только локальные филиалы. Кажется, он работает точно так же, как иgit branch
без него-l
, так в чем причина-l
?master
это не удаленная ветка.-l
флаг для списка. Вы можете использовать--list
тожеДля нас, кажется,
remote.origin.fetch
конфигурация дала проблему. Поэтому мы не могли видеть никаких других удаленных веток, чемmaster
, поэтомуgit fetch [--all]
не помогли. Ни то,git checkout mybranch
ни другоеgit checkout -b mybranch --track origin/mybranch
не работало, хотя, конечно, это было на расстоянии.Предыдущая конфигурация позволила
master
получить только:Исправьте это с помощью
*
и получите новую информацию из источника:Теперь мы можем
git checkout
удаленную ветку локально.Не знаю, как этот конфиг оказался в нашем локальном репо.
источник
Если имя удаленной ветви начинается со специальных символов, вам нужно использовать одинарные кавычки в команде checkout, иначе git не будет знать, о какой ветке вы говорите.
Например, я попытался извлечь удаленную ветку с именем as,
#9773
но команда не работала должным образом, как показано на рисунке ниже:По какой-то причине мне стало интересно, может ли острый символ (#) иметь к этому какое-то отношение, а затем я попытался
'#9773'
заключить имя ветви в одинарные кавычки, например, raten than just#9773
, и, к счастью, оно работало нормально.источник
#
символ используется для комментариев, поэтому все, что#
будет после, будет игнорироваться. Это вещь оболочки, а не что-то конкретное для git. Использование кавычек обратной косой черты перед#
должно быть достаточно.Пожалуйста, следуйте команде, чтобы создать пустую папку. Введите это и используйте эту команду:
источник