Восстановление после неудачной перезагрузки
Я использую git svn
, чтобы получить доброкачественность git с сервером svn, санкционированным компанией. У меня просто была перестановка, ужасно ужасная, и я пытаюсь найти лучший способ для восстановления.
Вот что произошло:
-
Для начала я имел это
---1 (master)
\--B--C--D--E (feature/fix-widgets)
-
Итак, я сделал git checkout master
, а затем git svn rebase
на хозяине, чтобы вытащить эти коммиты. Я не ожидал конфликтов между моей ветвью функций и мастером, потому что изменения были в совершенно другой папке. Итак, на данный момент, я думаю, что у меня есть это:
---1--2--3--4 (master)
\--B--C--D--E (feature/fix-widgets)
Где 1--2--3--4
фиксируются в svn.
-
Далее я делаю git checkout feature/fix-widgets
, а затем git rebase master
. Там сразу возникает конфликт и некоторые вещи, которые не складываются, поэтому я решил уклониться и внимательно посмотреть на вещи. Я делаю git rebase --abort
, надеясь, что это восстановит меня до того, где я был до перезагрузки.
-
Я делаю git rebase --abort
и получаю следующее сообщение
$ git rebase --abort
error: git checkout-index: unable to create file somedir/somefile.cs (Permission denied)
fatal: Could not reset index file to revision 'be44daa05be39f6dd0d602486a598b63b6bd2af7'.
-
Теперь я не уверен, что делать. git status
показывает, что я нахожусь на feature/fix-widgets
, но у меня есть целая группа поэтапного изменения и большое количество файлов без следа, которые ранее были зафиксированы. Я был бы в порядке, если бы смог вернуться E
.
Ответы
Ответ 1
Вам следует взглянуть на ORIG_HEAD
ORIG_HEAD
- это предыдущее состояние HEAD
, заданное командами, которые могут иметь опасное поведение, чтобы их было легко вернуть.
Менее полезно теперь, когда Git имеет reflog: [email protected]{1}
примерно эквивалентен ORIG_HEAD
([email protected]{1}
всегда является последним значением HEAD
, ORIG_HEAD
является последним значением HEAD
перед опасной операцией)
Итак, попробуйте git reset
, чтобы вернуться к любой перебазе:
git reset --hard ORIG_HEAD