Невозможно выполнить git revert после принудительной отправки в удаленный репозиторий

Я создал новую папку в своей системе. Там я сделал 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 26.12.2020 19:53

нет, он не показывает старые коммиты. Что я могу сделать?@Чандан

Rajeev Ranjan 26.12.2020 20:12

проверьте этот пост.

Chandan 26.12.2020 20:15

@Chandan спасибо, но не смог получить индексную страницу или страницу общедоступной активности в github, как это было предложено в ответе на этот пост. ты хоть представляешь, где я это возьму?

Rajeev Ranjan 26.12.2020 21:37
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
104
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вместо сброса вы можете выполнить откат в ветке, чтобы отменить фиксацию, которая была принудительно отправлена. Что-то вроде

git вернуть HEAD~1

мастер происхождения git push

Спасибо, но возникает фатальная ошибка: неверная версия «HEAD ~ 1» при выполнении 1-й команды

Rajeev Ranjan 26.12.2020 20:01
Ответ принят как подходящий

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.

Rajeev Ranjan 27.12.2020 06:01

Большой! Какой документации вы придерживались?

VonC 27.12.2020 10:34

В общедоступных данных, полученных с помощью push-уведомлений, я мог видеть до принудительной фиксации своего левого поля, а не до этого. Но в полезной нагрузке последнего коммита в событии извлеченных данных было упомянуто «от» ша «до» ша, что помогло мне получить идентификатор коммита от последнего до последнего нажатия. Затем я последовал за docs.github.com/en/free-pro-team@latest/rest/reference/git, через который я смог увидеть полную информацию о моем последнем коммите с использованием sha. Подробно я получил html_ulr, который привел меня на страницу github, где я смог загрузить файлы.

Rajeev Ranjan 27.12.2020 13:41

@RajeevRanjan Спасибо. Я включил ваш комментарий в ответ для большей наглядности.

VonC 27.12.2020 13:44

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