Удалить историю Git старого проекта - PullRequest
0 голосов
/ 19 февраля 2019

Я создал новый проект, скопировав существующий код.Обычно я клонирую новый пустой репозиторий, копирую файлы (без папки .git) из существующего аналогичного проекта и удаляю все соответствующие файлы.Первоначальный коммит будет весь набор инструментов / настроек без содержания.

Я как-то испортил это - наш CI только что попытался сделать релиз 1.0.0 и потерпел неудачу, потому что этот тег уже существует в git.Он существует в истории проекта, который я написал, который каким-то образом разрозненно болтается до фактического принятия проекта:

enter image description here

Первоначальная фиксацияНовый проект - это полный коммит, то есть он не «поверх» существующих коммитов.Это не удаление файлов, а просто добавление новых версий.Таким образом, новая и старая история полностью отделены друг от друга.

Понятия не имею, как мне это удалось!

Как лучше всего удалить старую историю и ее теги?Должен ли я просто удалить теги вручную?

1 Ответ

0 голосов
/ 19 февраля 2019

Если ни одна ветвь не ссылается на старые коммиты И никакие теги не прикреплены к старым коммитам И ваш новый начальный коммит не является "дочерним" коммитом старого кода (поэтому он не имеет родительского коммита), то все старые коммиты являются сиротами.

На скриншоте видно, что все еще есть некоторые теги, прикрепленные к старым коммитам.

После удаления этих тегов (git tag -d TAGNAME && git push --delete origin TAGNAME) вы можете локально собирать эти старые коммиты с помощью git gc --prune=now --aggressive,Вам, вероятно, также придется собирать мусор на пульте. Github согласно этому ответу автоматически периодически запускает gc.Если память мне не помешает, gitlab предоставляет опцию в настройках проекта.Для других поставщиков услуг, обратитесь к его руководству о том, как выполнить git GC.

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