Несколько дней назад каждый раз, когда я нажимаю клавишу tab для завершения имен веток в bash, я вижу сообщение:

предупреждение: игнорирование сломанных ссылок refs / remotes / origin / HEAD предупреждение: игнорирование сломанных ссылок refs / remotes / origin / HEAD

Например, это то, что я вижу, когда у меня есть ветка с именем feature / foo и я нажимаю tab:

git checkout f

$ git checkout fwarning: ignoring broken ref refs/remotes/origin/HEAD
warning: ignoring broken ref refs/remotes/origin/HEAD
eature/

sensorario

Ответов: 7

Ответы (7)

Я столкнулся с этим недавно, когда кто-то из моей команды удалил нашу старую ветку разработки с пульта дистанционного управления. Я выполнил эту команду, чтобы проверить статус HEAD:

$ git symbolic-ref refs/remotes/origin/HEAD
refs/remotes/origin/old_dev

Эта команда выводит имя старой ветки разработки, которая больше не существует.

Я исправил предупреждения, используя это:

$ git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/new_dev

(Где «new_dev» - имя ветки. Замените его именем ветки, на которую должен указывать HEAD.)

В моем случае проблема заключалась в файле .git \ refs \ remotes \ origin \ master, который был поврежден, возможно, из-за того, что мой компьютер был непреднамеренно отключен от питания несколько дней назад.

Я решил это, заменив содержимое файла правильной ссылкой, шестнадцатеричным числом из 40 символов, которое можно найти в файле .git \ FETCH_HEAD.

Некоторые проблемы возникают после того, как локальный мастер переименовывает main:

  • git fetch: «фатальный: не удалось найти удаленные ссылки / головы / мастер»;
  • git branch -u origin / main main: «ошибка: запрошенная ветка восходящего потока origin / main не существует»;
  • git remote set-head origin main: "error: Not a valid ref: refs / remotes / origin / main";
  • git push -u origin main: "ошибка: не удалось отправить некоторые ссылки на 'github.com:/.git'";
  • git symbolic-ref HEAD refs / Heads / main или git symbolic-ref refs / remotes / origin / HEAD refs / remotes / origin / main или git update -ref refs / Heads / main main,
    • , а затем git branch -r: "предупреждение: игнорирование сломанных ссылок refs / remotes / origin / HEAD";

Решение этой проблемы:

  1. git remote -v, скопировать URL-адрес репозитория git
  2. git remote rm origin, удалить удаленный
  3. git remote add origin , сбросить удаленный URL
  4. источник получения git
  5. git branch -u origin / main main, сбросить ветку восходящего потока

Просто запустите команду -

#replace the  with your main branch - master, main, etc.    
git remote set-head origin 

Наслаждайтесь!

Как уже ответили - предупреждение указывает, что удаленная ветка больше не существует, например когда удаленная ветка объединяется + удаляется в другую ветку.

В моем случае мне пришлось удалить свою локальную ветку, потому что она больше не нужна, и исправить неработающую ссылку было невозможно. Следовательно, git branch -d feature /.. выполнил свою работу.

Это более простое решение, чем symbolic-ref.


Начиная с , вы могли исключить ветвь, на которую изначально указывалось origin / HEAD.

1. Перечислите свои удаленные ветки с помощью:

git branch -r

2. Если он не отображается в результатах:

origin/HEAD -> origin/(something)

3. Просто укажите его снова с помощью:

git remote set-head origin master

, где «master» - это имя вашей основной (головной) ветки.


Запуск git branch -r снова теперь показывает origin / HEAD -> origin / (something), и предупреждение исчезает.

Похоже, что ветка по умолчанию вашего пульта origin больше не существует.
Исправьте ветку пульта по умолчанию:

2022 WebDevInsider