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.
Git has a built in way to rebase all the way back to the beginning of time. There is no need to scroll through the log to find the first hash, or find the total number of commits. Just use --root .
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.`
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With