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 коммитов успешно.
Ответы
Ответ 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 как флаг и вместо этого интерпретировал его как восходящий параметр.