Как удалить висячий коммит из GitHub? - PullRequest
22 голосов
/ 06 декабря 2010

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

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

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

Ответы [ 2 ]

15 голосов
/ 06 декабря 2010

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 .

4 голосов

Удалить репо или связаться с GitHub

Удаление репо и воссоздание его без плохой фиксации, кажется, работает, если вы можете позволить себе потерять все проблемы.Данные также исчезают из API фиксации (хотя push-события все еще видны).См. Также: https://stackoverflow.com/a/32840254/895245

Если вы не можете позволить себе потерять данные о проблеме, служба поддержки GitHub может вручную удалить оборванные коммиты.Например, когда я загрузил все электронные письма о коммитах GitHub в репозиторий , они попросили меня снять его, как я и сделал, и они сделали gc.Однако запросы на извлечение, содержащие данные , должны быть удалены : эти данные репо оставались доступными в течение одного года после первоначального удаления из-за этого.

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

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

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