Как удалить висячий коммит из GitHub?

Вчера я нажал на свой форк ConnectBot на GitHub. Я нажал один раз, понял, что я не сделал изменения так, как я хотел, переделал коммит и снова нажал.

Теперь GitHub имеет обе коммиты:

Моя основная ветвь отслеживает только второй коммит, но первый коммит все еще доступен и все еще находится в моем фиде активности. Как я могу удалить его, чтобы убедиться, что никто не тянет случайно этот коммит вместо исправленной версии?

2 ответа

Решение

GitHub будет периодически собирать мусор для любых коммитов (и других объектов), к которым нельзя получить доступ из ссылки верхнего уровня (такой как тег, ветвь или reflog). Это означает, что со временем (скажем, в следующем месяце) этот объект исчезнет.

При извлечении следует создавать пакет, содержащий только те объекты, на которые есть ссылки, поэтому никто не должен получать этот коммит в результате клона или извлечения. Например,

$ git clone git://github.com/nylen/connectbot.git
Cloning into connectbot...
remote: Counting objects: 6261, done.
remote: Compressing objects: 100% (1900/1900), done.
remote: Total 6261 (delta 3739), reused 5980 (delta 3520)
Receiving objects: 100% (6261/6261), 3.04 MiB | 3.40 MiB/s, done.
Resolving deltas: 100% (3739/3739), done.
$ git cat-file -t 1cd775d
fatal: Not a valid object name 1cd775d

Если вам действительно нужно немедленно удалить его, вам, вероятно, придется обратиться в службу поддержки GitHub.

Удаление хранилища и его воссоздание без плохой фиксации, кажется, работает, если вы можете позволить себе потерять все проблемы. Данные также исчезают из API фиксации (хотя push-события все еще видны). Смотрите также: /questions/44747117/udalit-konfidentsialnyie-fajlyi-i-ih-kommityi-iz-istorii-git/44747245#44747245

Кроме того, я связался со службой поддержки и из первых рук заметил их способность удалять оборванные коммиты, когда я загрузил все электронные письма о коммитах GitHub в репозиторий, и они попросили меня снять его: https://github.com/cirosantilli/all-github-commit-emails/issues/3

Их текущая страница помощи говорит:

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

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