Reputation: 931
I am trying to squanshing several commits together. When I used
git rebase –i HEAD~8
I got a fatal:
fatal: Needed a single revision
invalid upstream –i
Here is a part of commit logs: git log
All of the commits history of the corresponding Github repository is here: https://github.com/yikouniao/YukiLog/commits/master
When I used git rebase –i HEAD~2
, I got the same result.
I didn't know I had modified the file.gitconfig
, editor = notepad2
was add to the file. After I removed editor = notepad2
, everything is OK. Then I rebased and squanshed 8 commits successfully.
Upvotes: 58
Views: 84365
Reputation: 141946
Several options:
You are not on a branch (Detached head
) or maybe you are trying to rebase
or the wrong branch.
Checkout the branch you want to rebase
and try again.
you don't have 8 commits in your history (you have 7 or less)
try: git rebase -i --root
Here is the documentation for the --root
flag and why it will work for you.
--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.`
Upvotes: 107
Reputation: 4578
The problem is the dash in your –i. It's an en-dash (U2013) instead of a hyphen (U002D). I confirmed this by copying your dash and looking it up at http://unicode.scarfboy.com. Change it to -i instead.
The clue was the error message "invalid upstream –i". Git didn't recognize your –i as a flag and was instead interpreting it as the upstream parameter.
Upvotes: 12