Как удалить уже удаленный коммит из оторванной головы? - PullRequest
0 голосов
/ 11 сентября 2018

У меня следующая проблема - я хотел удалить некоторые коммиты из своей истории репозитория git (да, я знаю, что это плохая привычка, но я знаю, что делаю). Я сделал это с помощью rebase (я получил оттуда инструкции: https://ncona.com/2011/07/how-to-delete-a-commit-in-git-local-and-remote/), и коммиты были удалены из моей удаленной ветви, но они все еще есть в истории (на DETACHED_HEAD). Как я могу от них избавиться? что они могут полностью исчезнуть? Спасибо за любую помощь!

1 Ответ

0 голосов
/ 11 сентября 2018

… коммиты были удалены из моей удаленной ветви, но они все еще в истории (на DETACHED_HEAD). Как я могу избавиться от них, чтобы они могли полностью исчезнуть?

Обычный способ сделать это - позволить им умереть самостоятельно. Сборщик мусора со временем избавится от всего, что больше не используется. Вы также можете запустить его вручную с помощью git gc.

«DETACHED HEAD» просто означает, что вы в настоящее время проверяете любой коммит, который не связан с именем ветви (или вы извлекали его, используя сумму SHA коммита, а не имя ветви), подразумевая, что если вы добавите / При фиксации материала из этого состояния операция будет выполнена, но по умолчанию она не будет ни с чем связана, и на этом этапе имя ветви не будет автоматически обновляться.

Однако, если у вас есть хороший повод, чтобы заставить их исчезнуть (случайно совершило пароль в удобной для восприятия человеком форме, босс трепку сообщения или порно картинки, хранящиеся в неправильную папку), сначала нужно проверить, если ваши коммиты больше не достижим , ни из официальной ссылки, такой как тег или имя ветви, ни из какого-либо другого коммита, оставшегося неизменным, , ни из какой-либо записи в других reflogs .

Так что вам нужно очистить все это, чтобы быть уверенным, что ваш коммит будет очищен.

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

К сожалению, вы можете действовать только в своем локальном хранилище. Вы можете использовать некоторые средства, такие как «push -f», чтобы переписать историю в вашем удаленном хранилище, если у вас есть право сделать это. Однако для вспомогательных операций, таких как gc, вам потребуется прямой доступ к git-серверу, а затем работа оттуда.

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