У меня есть головоломка у меня в руках: несколько ранее зафиксированных файлов исчезли за ночь, но нет ни одной фиксации, которая показывает, что они были удалены. Как это могло случиться?Файлы исчезли из хранилища, но в истории фиксации нет удаления
ситуация выглядит следующим образом:
- У меня есть личное хранилище Git на BitBucket, с одной ветви.
- В моей команде 3 человека, и все используют SourceTree как их git-интерфейс.
- Вчера я нажал фиксацию - и после нее хранилище было в порядке.
- С тех пор все 3 другие члены команды толкнул несколько фиксаций:
- один был местный слияния,
- два были онлайн
README.md
правок, - один был на сайте ((т.е. через-а-страницы.) т.е. через веб-страницу) удаление одного несвязанного файла,
- , а остальные - несколько коммитов с 1 или 2 файлами.
- Утром я вытащил хранилище, только чтобы найти несколько различных файлов, которые были совершены разными людьми в разное время ушли из хранилища:
- они ушли из локальной копии ,
- они ушли из Source страницы на сайте Bitbucket проекта,
- они ушли из .zip, загруженный из Загрузки страницы.
- Однако:
- ни один из коммитов после шахты не удалить любой из этих файлов,
- я могу пойти на более раннюю совершить что модифицированный один «исчезнувшие» файлы, перейдите к своей сводной странице, просмотреть его историю - и ни один из коммитов в нем не удалит файл.
- Я дважды проверил, что никто не испортился с
.gitignore
, но с декабря прошлого года он был нетронутым.
Кроме того, чтобы еще больше запутать вопрос: несколько месяцев назад я добавил файлы A.R
и test-A.R
в одну фиксацию. Позднее я переименовал test-A.R
в test.A.R
. Теперь A.R
все еще находится в хранилище, но ни test-A.R
, ни test.A.R
все еще там.
Итак, что может привести к удалению файлов из репозитория Git без любой из них действительно удаляет их?
PS. Конечно, я подал заявку на поддержку поддержки BitBucket, но я не уверен, что они быстро ответят.
Оказалось, что один из коммитов действительно заставил файлы исчезнуть. Я буду исследовать дальше и либо принять ваш ответ (если они действительно «git push -f'), либо написать свой собственный (если проблема окажется чем-то другим). – Dragomok
@ Dragomok: чтобы добавить к этому ответу, посмотрите, есть ли у вас копия этого репо в другом месте. Если бы сила разработчика была нажата, то все остальные разработчики имели бы хороший оригинал, и вы можете использовать это, чтобы воссоздать дерево, как и должно было быть. – halfer
@halfer Мне удалось восстановить репо, последовательно используя «git reset --hard ...» до тех пор, пока файлы не появятся, скопируйте файлы за пределами репо, а затем вернитесь назад и снова верните их обратно. Для полноты: тот факт, что мне удалось это сделать, исключает, что толчок был вынужден, не так ли? (Ответственный за весь проклятие не знал, что они на самом деле сделали, так что я не собираюсь получить от них окончательное подтверждение ...) – Dragomok