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

Git rebase fatal: необходимо, чтобы одна ревизия недействительна вверху -i

Я пытаюсь сжать несколько коммитов вместе. Когда я использовал

git rebase –i HEAD~8

У меня роковое:

fatal: Needed a single revision
invalid upstream –i

Вот часть журналов фиксации: git журнал

Вся история фиксации соответствующего репозитория Github находится здесь: https://github.com/yikouniao/YukiLog/commits/master

Edit1:

Когда я использовал git rebase –i HEAD~2, я получил тот же результат.

Edit2:

Я не знал, что я изменил файл .gitconfig, editor = notepad2 был добавлен в файл. После удаления editor = notepad2 все в порядке. Затем я пересоздал и спрятал 8 коммитов успешно.

4b9b3361

Ответ 1

Несколько параметров:

  • Вы не находитесь на ветке (Detached head) или, возможно, вы пытаетесь выполнить rebase или неправильную ветку.
    Оформить заявку на отделение, которое вы хотите rebase, и повторите попытку.

  • у вас нет 8 коммитов в вашей истории (у вас 7 или меньше)

  • попробуйте: git rebase -i --root

Вот документация для флага --root и почему она будет работать для вас.

- root

Rebase all commits reachable from <branch>, instead of limiting them with
an <upstream>.This allows you to rebase the root commit(s) on a branch.  
When used with --onto, it will skip changes already contained in `<newbase>`   
(instead of `<upstream>`) whereas without --onto it will operate on every 
change. When used together with both --onto and --preserve-merges, all root 
commits will be rewritten to have `<newbase>` as parent instead.`

Ответ 2

Проблема заключается в тире в вашем -i. Это дефис (U2013) вместо дефиса (U002D). Я подтвердил это, скопировав тире и посмотрев на http://unicode.scarfboy.com. Измените его на -i вместо.

Ключ был сообщением об ошибке "invalid upstream -i". Git не распознал ваш -i как флаг и вместо этого интерпретировал его как восходящий параметр.