Как удалить ссылку на git `refs / original / refs /head / master`?

35

Что это в желтой круглой коробке?

Скриншот

Я пытался git branch -D, git tag -dно ничего не получилось. Так как же это удалить?

Xiè Jìléi
источник
1
Пожалуйста, рассмотрите возможность изменения принятого ответа на ответ Алексея Тен, который является высоко оцененным и правильным ( git update-ref -d).
Джонатон Рейнхарт

Ответы:

11

Это похоже на тег, поэтому должна работать следующая команда:

git tag -d refs/original/refs/heads/master

Но, поскольку вы сказали, что это не так, вы можете просто удалить файл из .gitкаталога. Из корня хранилища команда, подобная этой, получит это:

rm .git/refs/tags/refs/original/refs/heads/master

Путь может немного отличаться в случае сбоя git-tagкоманды, поэтому вы можете захотеть cd .git/refsнайти неисправную голову методом проб и ошибок. Удаление файла удалит ссылку из вашего локального репозитория.

Стивен Дженнингс
источник
2
Это не тег, однако я нашел его как .git/refs/original/refs/heads/master.
Xiè Jìléi
1
Используйте, git update-refа не вручную изменяйте внутренности Git. Смотрите ответ Алексея.
wchargin
100

Эта команда должна работать

git update-ref -d refs/original/refs/heads/master
Алексей Тен
источник
Это сработало для меня с той же проблемой. Обратите внимание, что ссылка была сохранена в файле с именем .git / pack-refs. Если вы откроете это, то увидите строку с SHA и строку «refs / original / refs /head / master». Возможно, вы могли бы удалить эту строку, но я бы использовал эту команду для безопасности.
Мэтт N
14
+1: Вы должны всегда использовать git update-ref -dвместо того, чтобы просто rmиспользовать реф - плохие вещи могут случиться иначе.
Каллум Роджерс
3
Это должен быть принятый ответ
Даниэль Олдер
1
@CallumRogers почему?
wahnfrieden
6
@wahnfrieden, потому что git может использовать упакованные ссылки, и в refsкаталоге не будет соответствующего файла
Алексей Тен
17

Это ссылка. Обычно создается git filter-branch- это указатель на то, где находилась ваша ветка до вашего запуска git filter-branch.

И чтобы удалить любую ссылку, вы всегда можете ничего не помещать в локальный репозиторий:

git push . :refs/original/refs/heads/master

Другие ответы также довольно хорошо охватывали другие способы удаления.

chutz
источник
1
«Ничего не нажимать», чтобы удалить ссылку локально, очень умно.
40XUserNotНайдено
Сделал мой день. У меня была ссылка на удаленный тег, которого больше не существует. Это единственная команда, которая сработала.
RW4