Будет ли git обрезать коммит, который не имеет ответвлений, но помечен?

git

236 просмотра

2 ответа

Из того, что я понимаю, git будет иногда обрезать коммиты, которые недоступны никаким ветвям. Однако удаляет ли он эти коммиты, даже если они имеют теги?

Я думал о том, чтобы сделать кто-то один коммит и пометить их, но только когда-нибудь один коммит, так что им не нужно прикреплять ветки.

Автор: Jon Источник Размещён: 08.11.2019 11:07

Ответы (2)


3 плюса

Решение

Нет, он не будет удалять любые коммиты, на которые ссылаются ветки, теги, индекс и т. Д. Или любой родительский из этих коммитов. См. Раздел «Примечания» на странице справки для git gc:

git gc очень старается быть в безопасности от мусора, который он собирает. В частности, он будет хранить не только объекты, на которые ссылается ваш текущий набор веток и тегов, но также и объекты, на которые ссылаются индекс, ветви удаленного отслеживания, ссылки, сохраненные git filter-branch в refs / original / или reflogs (которые могут ссылка коммитов в ветках, которые были позже исправлены или перемотаны).

Если вы ожидаете, что некоторые объекты будут собраны, а их нет, проверьте все эти местоположения и решите, имеет ли смысл в вашем случае удалить эти ссылки.

Автор: lucash Размещён: 20.08.2016 09:50

3 плюса

Нет. Любой коммит, который доступен из любой ссылки (ветки, теги, даже тайник) или транзитивно достижимый (то есть все их родители), безопасен для сбора мусора до тех пор, пока существуют эти указатели на коммиты.

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

Автор: poke Размещён: 20.08.2016 09:44
Вопросы из категории :
32x32