Git rebase --abort заставил все мои коммиты исчезнуть, есть ли способ их восстановить? - PullRequest
1 голос
/ 07 ноября 2019

Я начал свой проект в прошлом месяце и совершил около 150 раз.

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

Вот что произошло:

  • этим утром я отменил один коммит, который я сделал 2 дня назад. AFAIK, все прошло хорошо. С тех пор я продолжал работать и делать коммиты.

  • сегодня днем, я понял, что мои последние 2 коммиты могут быть объединены. Поэтому я попытался git rebase --interactive. Но Гит ответил:

I wonder if you are in the middle of another rebase.  If that is the
case, please try
        git rebase (--continue | --abort | --skip)
If that is not the case, please
        rm -fr ".git/rebase-merge"
and run me again.  I am stopping in case you still have something
valuable there.

Я думал, что я был из-за моего недавнего возврата и сделал git rebase --abort. И я сделал не так. Почти все мои коммиты исчезают, в git log отображаются только первые 3, за последний месяц. Я полагаю, что с тех пор у меня ожидала повторная проверка.

Есть ли способ отменить эту перезагрузку --abort?

Спасибо за чтение и вашу помощь.

РЕДАКТИРОВАТЬ: здесьэто git-статус:

On branch master
Your branch is behind 'origin/master' by 147 commits, and can be fast-forwarded.
  (use "git pull" to update your local branch)

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        .vscode/
        __pycache__/
        main.py
        venv/

nothing added to commit but untracked files present (use "git add" to track)

EDIT: а вот и git reflog (я хотел бы вернуться к f0b2519):

6b634e3 (HEAD -> master) HEAD@{1}: rebase -i (abort): updating HEAD
f0b2519 HEAD@{2}: commit: Add comments in params
da4f6b7 HEAD@{3}: commit: Add comments in params
850ac42 HEAD@{4}: commit: del pygame import in params, adapt main and pygi
3415a2f HEAD@{5}: commit: Put config content in params then delete config
98a8b89 HEAD@{6}: commit: Supress 'if main' in params
72803da (origin/master) HEAD@{7}: checkout: moving from 63cb88ae8d2f1547c7d18882084c06b73d892419 to master
63cb88a HEAD@{8}: checkout: moving from master to branch2
72803da (origin/master) HEAD@{9}: revert: Revert "Move switcher in pgi.press_key()"       
3f3ccb6 HEAD@{10}: checkout: moving from branch2 to master
63cb88a HEAD@{11}: checkout: moving from branch2 to branch2
63cb88a HEAD@{12}: revert: Revert "Move switcher in pgi.press_key()"
3f3ccb6 HEAD@{13}: checkout: moving from master to branch2
3f3ccb6 HEAD@{14}: checkout: moving from branch2 to master
3f3ccb6 HEAD@{15}: checkout: moving from master to branch2
3f3ccb6 HEAD@{16}: commit: Update requirements.txt
ccc6845 HEAD@{17}: commit: Edit docstring in pygameinterface
e4632d2 HEAD@{18}: commit: Linting on config and tool

EDIT: git reset --hardf0b2519 работал как шарм, какое облегчение! Большое спасибо всем.

1 Ответ

1 голос
/ 07 ноября 2019

Git reflog скорее всего ваш друг и спаситель.

Журналы ссылок, или "reflogs", записывают, когда подсказки веток и другие ссылки обновлялись в локальном репозитории. Reflogs полезны в различных командах Git, чтобы указать старое значение ссылки. Например, HEAD @ {2} означает «где HEAD раньше был два шага назад», master@]one.week.ago} означает «где master указывал на неделю назад в этом локальном репозитории» и так далее. См. Gitrevisions [7] для более подробной информации.

Это то, что ohshitgit.com может сказать о reflog

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

Я несколько раз использовал reflog, когда запутался.

С этим журналом вы можете вернуться в прошлое, проверив определенный пункт в журнале this ТАК ответ может прояснить ситуацию подробнее.

...