Git репозиторий потерял свои удаленные ветки?
У меня есть репозиторий git с удаленной настройкой ( "git fetch" ), но у него нет удаленных ветвей: папка ".git/refs/remotes" не существует, и
git branch -r
ничего не возвращает (пустой список, без ветвей). Однако фактический удаленный репозиторий имеет ветвь. Если я повторно клонирую удаленное репо, я получаю другое местное репо, у которого есть удаленные ветки.
Я не думал, что это состояние возможно. Мои вопросы:
- Как я попал в это состояние?
- Есть ли команда, которую можно запустить, чтобы вернуть ".git/refs/remotes" обратно? (за исключением нового клона, который я уже сделал).
Дополнительная информация
"git config --get remote.origin.fetch" пуст (то есть команда не производит вывод)
"git источник удаленного шоу" показывает
$ git remote show origin
* remote origin
Fetch URL: <correct remote url here>
Push URL: <correct remote url here>
HEAD branch: master
Local ref configured for 'git push':
master pushes to master (up to date)
Ответы
Ответ 1
[Редактировать, апрель 2017]. Если вы создали свой оригинальный клон с --single-branch
, это будет проблема с настройкой remote.origin.fetch
. Если вы использовали предел --depth
, это также означает --single-branch
. Восстановите нормальное значение remote.origin.fetch
, описанное ниже, и вы получите более полный клон.
Обычно просто запуск git fetch
должен восстанавливать ветки удаленного отслеживания.
Если git fetch
не восстанавливает их, то я задаюсь вопросом: что идет git config --get-all remote.origin.fetch
print? (Предполагается, что пульт называется origin
, если нет, замените фактическое имя.) Он должен быть установлен на +refs/heads/*:refs/remotes/origin/*
(опять же, если принять имя origin
). Специальные случаи (например, извлечение заметок) могут добавить больше строк.
Ответ 2
Это решило мою проблему
git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
Когда я запускаю vi .git/config
, я теряю строку выборки:
fetch = +refs/heads/*:refs/remotes/origin/*