Невозможно удалить теги Git со специальными символами - PullRequest
0 голосов
/ 30 апреля 2020
$ git tag
+"feature/04-28_v001-11"+
+"feature/04-28_v001-19"+

Над git тегами удалить невозможно, так как + и «существуют в тегах.

1 Ответ

1 голос
/ 30 апреля 2020

Сообщение об ошибке

error: cannot lock ref 'refs/tags/+"feature/04-28_v001-11"+': unable to create directory for .git/refs/tags/+"feature/04-28_v001-11"+

указывает на то, что вы не работаете в POSIX. Я предполагаю, что вы находитесь на Windows.

Как указывает сообщение об ошибке, Git не может создать каталог, содержащий символ двойной кавычки. Вывод заключается в том, что тег не существует в файловой системе, но существует только в файле упакованных ссылок.

ПРЕДУПРЕЖДЕНИЕ: Ниже предлагается метод решения вашей проблемы, но вы работаете с базой данных Git. Перед продолжением убедитесь, что у вас есть резервная копия хранилища.

Прежде чем продолжить, убедитесь, что хранилище находится в состоянии покоя. Никакие операции Git не должны выполняться. Закройте все пользовательские интерфейсы, включая редакторы кода и IDE, которые будут обращаться к хранилищу.

Теперь создайте резервную копию файла

.git/packed-refs

на тот случай, если вы что-то сломаете.

Чтобы удалить тег, отредактируйте этот файл с помощью современного редактора исходного кода, который может справиться с ограничителями строки Unix (LF вместо CRLF) (любой редактор, кроме Notepad, подойдет). Посмотрите на строки, упоминающие теги, и удалите строки и строки, следующие за ними, если они начинаются с символа ^.

То есть, когда вы начинаете с

# pack-refs with: peeled fully-peeled sorted
9e72299d[...] refs/heads/master
57689754[...] refs/tags/bad/one
^b73b6860[...]
03706a09[...] refs/tags/bad/two
^ed20caaf[...]
f9d1d51c[...] refs/tags/good/one
^4974cb42[...]

, вы удалите bad, вы должны закончить с

# pack-refs with: peeled fully-peeled sorted
9e72299d[...] refs/heads/master
f9d1d51c[...] refs/tags/good/one
^4974cb42[...]

Позвоните git tag, чтобы проверить результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...