… коммиты были удалены из моей удаленной ветви, но они все еще в истории (на DETACHED_HEAD). Как я могу избавиться от них, чтобы они могли полностью исчезнуть?
Обычный способ сделать это - позволить им умереть самостоятельно. Сборщик мусора со временем избавится от всего, что больше не используется. Вы также можете запустить его вручную с помощью git gc
.
«DETACHED HEAD» просто означает, что вы в настоящее время проверяете любой коммит, который не связан с именем ветви (или вы извлекали его, используя сумму SHA коммита, а не имя ветви), подразумевая, что если вы добавите / При фиксации материала из этого состояния операция будет выполнена, но по умолчанию она не будет ни с чем связана, и на этом этапе имя ветви не будет автоматически обновляться.
Однако, если у вас есть хороший повод, чтобы заставить их исчезнуть (случайно совершило пароль в удобной для восприятия человеком форме, босс трепку сообщения или порно картинки, хранящиеся в неправильную папку), сначала нужно проверить, если ваши коммиты больше не достижим , ни из официальной ссылки, такой как тег или имя ветви, ни из какого-либо другого коммита, оставшегося неизменным, , ни из какой-либо записи в других reflogs .
Так что вам нужно очистить все это, чтобы быть уверенным, что ваш коммит будет очищен.
Вы можете взглянуть на эту запись , чтобы узнать, какие варианты передать на git gc
, чтобы предписать ей истечь все прямо сейчас, но не спешите в нее, пока не получите полностью понял, что они делают.
К сожалению, вы можете действовать только в своем локальном хранилище. Вы можете использовать некоторые средства, такие как «push -f», чтобы переписать историю в вашем удаленном хранилище, если у вас есть право сделать это. Однако для вспомогательных операций, таких как gc
, вам потребуется прямой доступ к git-серверу, а затем работа оттуда.