Вариант 1: Избегайте проблем?
Проблема может быть устранена, если вы явно не укажете, какие ветки вы хотите извлечь. (Но если вам нужно получить только выбранный набор отраслей, вероятно, лучше перейти к варианту 2.) При создании клона вы можете сказать, что вы хотите, чтобы все ветви
git clone --depth=1 --no-single-branch ...
Или, если вы уже клонированы и хотите получить остальные ветви: из ваших инструкций, вместо
git remote set-branches --add origin <branch-name>
который конфигурирует выборки искать для конкретной отрасли, можно
git config --unset remote.origin.fetch
git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
git fetch --depth=1
Удаление ветви (локально и дистанционное ly) больше не вызывает проблемы.
(Вы можете быть в состоянии использовать более селективный шаблон, но в тех случаях, когда вы не хотите «все» можно поспорить, выбирать отдельные ветви.)
Если у вас уже есть хранилище и добавил несколько ветвей, как вы описали выше, команды конфигурации, аналогичные тому, что я перечислил, должны «восстановить». (Просто замените --unset
с --unset-all
в первой команде.)
Вариант 2: Фикс проблемы
Но если вам нужен ваш конфиг, чтобы показать отдельные ветви, можно обрабатывать удалить в одном из этих способов :
Вы можете использовать git config
, чтобы непосредственно удалить настройки без ручного редактирования файлов.
git config --unset remote.origin.fetch <branch-name>
берегись, <branch-name>
интерпретируется как регулярное выражение, и, если он соответствует несколько значений, то он не будет работать. Так что, если вы получите предупреждение о нескольких значениях согласующих, вы должны были бы сделать что-то вроде
git config --unset remote.origin.fetch origin.<branch-name>$
Или вы можете использовать git remote set-branches
:
Хотя нет явного git remote set-branches --remove
или что-нибудь, что сортировать, вы можете использовать set-branches
без флаг --add
, чтобы полностью восстановить список удаленных филиалов. Если у вас слишком много других филиалов, это сработает. Например, учитывая только то, что было показано выше вы могли бы сделать
git remote set-branches origin master
Но если вы добавили кучу других ветвей, вы должны перечислить их тоже или потерять их.
git remote set-branches origin master branch1 branch2 branch3 ...
Вы можете автоматизировать процесс получения списка филиалов
git branch | sed s/'\* '// | xargs git remote set-branches origin
Но что бы вопрос, если какой-либо из местных отделений нет, на самом деле, предназначены для отслеживания происхождения.
Я не могу воспроизвести точную ситуацию, поэтому не уверен ... но делает ли git branch --unset-upstream 'work? –
К сожалению, нет сообщений о том, что «фатальный: Branch» «не имеет информации о восходящем направлении». Я попробую его до удаления, хотя и посмотрю, поможет ли это –
dumbledad
Да, я, наконец, воспроизвел первоначальную ошибку (нашел тот шаг, который я пропустил), и вижу, что это не так легко. Я немного поиграю и дам вам знать, что я нахожу. –