Я клонировал репозиторий, после чего кто-то еще создал новую ветку, над которой я хотел бы начать работать. Я прочитал руководство, и оно кажется невероятно простым. Странно, что это не работает, и все сообщения, которые я нашел, говорят о том, что я поступаю правильно. Поэтому я подвергну себя критике, потому что с этим должно быть что-то явно не так:
Правильное действие , кажется , что
git fetch
git branch -a
* master
remotes/origin/HEAD --> origin/master
remotes/origin/master
git checkout -b dev-gml origin/dev-gml
На этом этапе возникает проблема, по какой-то причине после того, как git fetch
я не вижу удаленную ветку dev-gml. Почему нет? Если я клонирую репозиторий заново, он есть, поэтому, безусловно, существует удаленная ветка:
$ mkdir ../gitest
$ cd ../gitest
$ git clone https://github.com/example/proj.git
Cloning into proj...
remote: Counting objects: 1155, done.
remote: Compressing objects: 100% (383/383), done.
remote: Total 1155 (delta 741), reused 1155 (delta 741)
Receiving objects: 100% (1155/1155), 477.22 KiB | 877 KiB/s, done.
Resolving deltas: 100% (741/741), done.
$ cd projdir
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/dev-gml
remotes/origin/master
Я пытался git update
, git pull
, git fetch --all
, git pretty-please
во всех возможных перестановках ...
git config --get remote.origin.fetch
производит? Если это не так+refs/heads/*:refs/remotes/origin/*
, то, вероятно, так и должно быть.+refs/heads/master:refs/remotes/origin/master
сmaster
вместо*
Ответы:
Проблема может быть замечена при проверке
remote.origin.fetch
настройки(строки, начинающиеся с,
$
являются приглашениями bash с набранными мною командами. Остальные строки являются результирующим выводом)Как вы можете видеть, в моем случае, пульт дистанционного управления был настроен на выборку основной ветви только и только. Я исправил это, как показано ниже, включая вторую команду для проверки результатов.
Подстановочный знак,
*
конечно, означает все под этим путем.К сожалению, я увидел этот комментарий после того, как уже покопался и нашел ответ методом проб и ошибок.
источник
--replace-all
параметр, чтобы заменить все значения в конфигурации для моегоremote.origin.fetch
git clone <url> --branch <branch> --single-branch [<folder>]
git clone ... --depth 1
У меня была эта проблема сегодня на репо.
Это не было
+refs/heads/*:refs/remotes/origin/*
проблемой согласно главному решению.Симптом был просто , что
git fetch origin
илиgit fetch
просто не появлялось ничего делать, хотя были удаленные ветви , чтобы принести.Попробовав много вещей, я удалил исходный пульт и воссоздал его. Это, кажется, исправило это. Не знаю почему.
удалить с помощью:
git remote rm origin
и воссоздать с:
git remote add origin <git uri>
источник
remote.origin.fetch
т+refs/heads/*:refs/remotes/origin/*
. Вышеуказанное решение помогло мне.git remote update origin
работал на меня. Я думаю, что-то нужно освежить?git remote update origin
не работал для меня, но удаление и добавление удаленного сделал.Удаленное обновление
Вам нужно бежать
или
Затем вы можете запустить
git branch -r
список удаленных филиалов.Оформить заказ на новую ветку
Чтобы отследить (новую) удаленную ветку как локальную:
или (иногда это не работает без дополнительного
remotes/
):Полезные хитрости
источник
git fetch
а затемgit branch -a
он не показывает все ветви. Мне пришлось удалить мой рабочий каталог и повторно клонировать, чтобы увидеть веткуdev-gml
, созданную соавтором. Это сработало на этот раз, но мы будем часто разветвляться!Edit:
очень хорошо, могло сработать. Это то, что я бы попробовал, если бы все еще сталкивался с проблемой. HTHgit remote update origin
. Это сделало недостающую ветку видимой черезgit branch -l -r
. (Я посмотрел,git config --get remote.origin.fetch
и результат оказался таким,+refs/heads/*:refs/remotes/origin/*
как ожидалось.)напиши это из терминала
это работает отлично.
источник
Чтобы сделать его более конкретным, создайте отслеживающую ветвь, что означает, что вы сейчас отслеживаете удаленную ветвь.
После чего вы можете
Тогда для работы над этой веткой делай
После того, как вы внесли изменения в ветку. Вы можете выполнить git fetch и git merge с удаленной веткой отслеживания, чтобы объединить изменения и отправить в удаленную ветку, как показано ниже.
Надеюсь, это поможет и даст вам представление о том, как это работает.
источник
У меня была похожая проблема, однако в моем случае я мог тянуть / толкать к удаленной ветви, но
git status
не показывал состояние локальной ветви по сравнению с удаленными.Также в моем случае
git config --get remote.origin.fetch
ничего не вернулиПроблема в том, что в
.git/config
файле в строке выборки соответствующего удаленного блока произошла опечатка . Вероятно, что-то, что я добавил по ошибке ранее (иногда я непосредственно просматриваю этот файл или даже редактирую его)Итак, проверьте правильность вашей удаленной записи в
.git/config
файле, например:источник
Это может произойти из-за того, что вы переключаетесь между несколькими клонами, легко оказаться в неправильном дереве исходных текстов, пытаясь вытянуть несуществующую ветвь. Проще, когда клоны имеют схожие имена или репозитории являются отдельными клонами для одного и того же проекта от каждого из нескольких участников. Новый клон git, очевидно, решает эту «проблему», когда реальная проблема - потеря фокуса, рабочего контекста или того и другого.
источник
Мне пришлось зайти в мои удаленные репозитории GitExtensions, так как здесь ничего не работало. Там я увидел, что 2 ветки не имеют настроенного удаленного хранилища. после регулировки выглядит следующим образом
В ветке Notice по-
noExternal3
прежнему отображается удаленный репозиторий. Не уверен, какое сочетание команд bash нашло бы или настроило это.источник
Была такая же проблема сегодня при настройке моего репо с нуля. Я перепробовал все, ничего не работало, кроме удаления источника и повторного добавления.
источник
У нас была такая же проблема, и вы должны использовать
Надеюсь, что это поможет кто-то сталкивается с той же проблемой
источник