Как я могу восстановить теги git?

Мне пришлось переустановить Windows. После того как я клонировал свои репозитории с GitHub, я заметил, что все мои теги исчезли. Я не знал, что они не фиксируются автоматически.
Однако перед переустановкой Windows я скопировал свой жесткий диск на внешний диск. Там я нашел свои теги в poject1\.git\refs\tags. Я скопировал теги в свой новый клон, открыл Visual Studio, и все теги вернулись.
Но это не сработало для второго проекта, где папка резервной копии poject2\.git\refs\tags пуста. Здесь я узнала, что теги тоже можно хранить в .git/packed-refs. Я скопировал этот файл в свой новый клон, и это действительно сработало. У меня есть все мои теги обратно. Но Visual Studio также сообщает мне, что есть 11 коммитов, которые еще не отправлены. Но это неправда, и я боюсь что-то повредить, когда снова вношу изменения. Итак, я скопировал обратно файл packed-refs. Теперь нет неотправленных изменений, но, конечно, и мои теги исчезли.
Что я могу сделать, чтобы вернуть свои теги? Это эл. г. сохраните, чтобы скопировать строку
16128508741561153db64253e8545c7916b6f8b7 ссылки/теги/app_2.0
из моей packed-refs резервной копии в новую packed-refs?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Загрузите их из резервной копии:

cd /path/to/newrepo
git fetch /path/to/your/backup refs/tags/*:refs/tags/*

или перейдите в текущий репозиторий:

cd /path/to/your/backup
git push /path/to/newrepo --tags

Возможно, это чище для проекта1, где в папке есть файлы .git\refs\tags. Но моя главная проблема в том, что для проекта2 эта папка пуста, а теги хранятся внутри файла packed-refs.

Flippowitsch 20.02.2024 15:03

@Flippowitsch git fetch не делает различий между свободными и упакованными ссылками, Git прозрачно обрабатывает ссылки в каталоге refs/tags и файле packed-refs.

knittl 20.02.2024 15:06

ХОРОШО. Я постараюсь. «/path/to/newrepo» — это путь к файлу *.sln или к папке .git?

Flippowitsch 20.02.2024 15:13

@Flippowitsch обычно это рабочее дерево, но в данном случае это не имеет особого значения

knittl 20.02.2024 15:16

Вы спасли мой день. Большое спасибо. На всякий случай, если кто-то еще столкнется с этой проблемой: путь к резервной копии не должен содержать пробелов. Если да, то поместите его в двойные кавычки.

Flippowitsch 20.02.2024 15:32

Другие вопросы по теме