Подтвердить что ты не робот

Сохраняет ли github удаленные удаленные ветки в истории? Если да, могут ли они быть восстановлены?

Мне было интересно, есть ли способ восстановить удаленную удаленную ветвь в github. История явно ведет запись ветки и сливается с другими ветвями, но я не уверен, можно ли восстановить удаленную ветку.

Спасибо.

4b9b3361

Ответ 1

Да, возможно восстановить удаленную ветку из git.

Найдите свой идентификатор Commit ID: найдите ветку с помощью git reflog

Если у вас была ветка в локальном репозитории git за последние 30 дней, вы можете найти ее в рефлоге используя следующее:

git reflog

Найдите имя ветки в рефлоге и обратите внимание на точку HEAD{x} или идентификатор фиксации.

Восстановить ветку с точки HEAD Reflog:

git checkout -b branch_name [email protected]{27}

Восстановить ветку с идентификатора фиксации:

Вы можете проверить идентификатор фиксации и создать ответвление от этой точки фиксации:

git checkout -b branch_name <commit id>

Ответ 2

Можно запросить поддержку GitHub и заглянуть в reflog вашего пульта repo (как в этом потоке, например).
Если это значение достаточно близко (менее 30 дней по умолчанию) от удаления, в файле reflog все еще содержатся коммиты, на которые больше не ссылается ни одна ветка.
Создание ветки на одном из этих коммитов позволяет им снова быть доступными.

Подробнее о reflog см. " что это за рефлок и почему это так важно?


Обновление: владелец репо также может запросить API-интерфейсы GitHub:
См. "Сохраняет ли GitHub код фиксации?"

Ответ 3

git reflog покажет вам историю HEAD. Если удаленная ветка была названа foo, тогда в этом выводе должны появиться строки типа 48534f5 [email protected]{0}: checkout: moving from master to foo или 48534f5 [email protected]{1}: merge foo: Fast-forward. Вы можете найти вывод git reflog, чтобы выяснить, какая фиксация должна быть последней, на которую указывает foo.

Имейте в виду, что сам файл "foo" reflog удаляется, когда foo был удален, но поскольку HEAD reflog отличается от него, он все еще существует.

Ответ 4

Взгляните на этот python script для событий github. https://github.com/jimzucker/githubutils/blob/master/githubreflog.py

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

Ответ 5

Когда ветка удалена в течение очень долгого времени (в моем случае, 1 год), но вы открыли запрос на перенос для этой ветки, вы можете восстановить ее, выполнив поиск в истории запросов на тягу.

Как только я нашел запрос на перенос для этой ветки, я смог восстановить ветку. Соответствующая информация о фиксации и т.д. Также доступна по запросу pull.