Подтвердить что ты не робот

Восстановление после неудачной перезагрузки

Я использую 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.

4b9b3361

Ответ 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