Як видалити посилання на git `refs / original / refs / heads / 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 / packed-refs. Якщо ви відкриєте це, ви можете побачити рядок із SHA та рядком "refs / original / refs / heads / master". Можливо, ви могли б видалити цей рядок, але я скористався цією командою, щоб бути безпечним.
Matt N

14
+1: Ви завжди повинні використовувати git update-ref -dзамість того, щоб просто rmрефлексувати - погані речі можуть статися інакше.
Каллум Роджерс

3
Це має бути прийнята відповідь
Даніель Алдер

1
@CallumRogers чому?
wahnfrieden

6
@wahnfrieden, тому що git може використовувати запаковані refs, а відповідного файлу в refsкаталозі не буде
Alexey Ten

17

Це реф. Зазвичай створюється git filter-branch- це вказівник на те, де була ваша гілка перед тим, як бігти git filter-branch.

А щоб видалити будь-який номер , ви завжди можете нічого не натиснути на нього в локальному сховищі:

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

Інші відповіді також доволі добре висвітлювали інші способи видалення.


1
"Натиснути нічого", щоб видалити посилання локально, дуже розумно.
40XUserNotFound

Зробив мій день. Я мав посилання на віддалений тег, що віддаленого більше не існує. Це єдина команда, яка працювала.
RW4
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.