Я создал новую папку в своей системе. Там я сделал git init
, а затем добавил удаленное происхождение, например
git remote add origin https://github.com/usrname/reponame
Затем, не вытягивая, я принудительно отправил свои локальные изменения в существующий репозиторий git с помощью команды -f
, которая удалила предыдущие данные и сохранила новые.
Теперь мне нужны мои предыдущие данные этого репозитория git. Сразу после git push
я выполнил git reset --hard HEAD~1
, но получил эту ошибку:
Я также попробовал git reset --hard last_commit_id
, который я получил после принудительного обновления, но получил ошибку, например fatal: ambiguous argument '0...4': unknown revision or path not in the working tree
.
Я даже сделал git log --all
или git reflog
, но не получил предыдущие идентификаторы коммитов и данные.
нет, он не показывает старые коммиты. Что я могу сделать?@Чандан
проверьте этот пост.
@Chandan спасибо, но не смог получить индексную страницу или страницу общедоступной активности в github, как это было предложено в ответе на этот пост. ты хоть представляешь, где я это возьму?
Вместо сброса вы можете выполнить откат в ветке, чтобы отменить фиксацию, которая была принудительно отправлена. Что-то вроде
git вернуть HEAD~1
мастер происхождения git push
Спасибо, но возникает фатальная ошибка: неверная версия «HEAD ~ 1» при выполнении 1-й команды
HEAD~1
не существует локально, так как вы только что инициализировали свой локальный репозиторий.
Предполагая, что удаленный репозиторий был не новым репозиторием, а тем, в котором произошло несколько толчков (перед вашим последним принудительным нажатием, которое отменило все), вы можете попытаться получить предыдущий толчок (тот, который был сделан до вашего принудительного нажатия)
Для этого вы можете использовать журнал ссылок для бедняков, который использует GitHub API для получения общедоступного push-события и связанного с ним SHA1. (curl -u <username>:<token> https://api.github.com/repos/<user>/<repo>/events
)
Замените <user>
на ваше имя пользователя GitHub, а <repo>
на имя вашего репозитория.
Используйте PAT (токен личного доступа) как <token>
.
Затем вам нужно будет, как упоминалось в предыдущей ссылке, создать ветку GitHub «tmp
», чтобы ссылаться на этот старый SHA1 (все еще используя GitHub API).
Оттуда вы можете получить и сбросить локальный master
на полученный origin/tmp
git switch -C master origin/tmp
ОП использовал большие двоичные объекты / получил большой двоичный объект GitHub API для
см. полную информацию о моем последнем коммите с использованием SHA.
В подробностях я получилhtml_ulr
, который привел меня на страницу GitHub, где я смог загрузить файлы.
Большое спасибо @Vonc. Я вернул свои файлы. Справочная документация Git помогла мне вернуть мои потерянные файлы, хотя для меня была создана тренировка tmp file dint, так как я получал некоторую ошибку при создании ветки ref/tmp.
Большой! Какой документации вы придерживались?
В общедоступных данных, полученных с помощью push-уведомлений, я мог видеть до принудительной фиксации своего левого поля, а не до этого. Но в полезной нагрузке последнего коммита в событии извлеченных данных было упомянуто «от» ша «до» ша, что помогло мне получить идентификатор коммита от последнего до последнего нажатия. Затем я последовал за docs.github.com/en/free-pro-team@latest/rest/reference/git, через который я смог увидеть полную информацию о моем последнем коммите с использованием sha. Подробно я получил html_ulr, который привел меня на страницу github, где я смог загрузить файлы.
@RajeevRanjan Спасибо. Я включил ваш комментарий в ответ для большей наглядности.
проверьте свое удаленное репо, если оно содержит старые коммиты.