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


35

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

Скриншот

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


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

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


1
«Ничего не нажимать», чтобы удалить ссылку локально, очень умно.
40XUserNotНайдено

Сделал мой день. У меня была ссылка на удаленный тег, которого больше не существует. Это единственная команда, которая сработала.
RW4
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.