如何将 Git 的交互式 rebase 与仅限本地的存储库(无远程/源)一起使用?

How do I use Git's interactive rebase with a local-only repository (no remote / origin)?

我使用 git 作为本地源代码控制系统,主要用于历史记录和差异跟踪。我仍然想使用 rebase 对我将定期进行的 WIP 提交进行修复/压缩。但是,当我尝试执行 git rebase -i 时,我得到以下信息:

There is no tracking information for the current branch.
Please specify which branch you want to rebase against.
See git-rebase(1) for details

    git rebase <branch>

If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream-to=<remote>/<branch> MyBranch

似乎 git 不希望您在没有上游远程的情况下使用交互式变基?我该怎么做?

git rebase -i 在 shorthand 中,如果不指定目标分支,将使 git 假设您正在尝试根据您的分支跟踪的远程分支进行变基。这就是错误消息提到遥控器的原因。

当您指定一个目标时,git 将根据该 commit-ish:

git rebase -i <commit-ish>

简而言之 - 如果您有 3 个本地提交并且您现在想要交互 rebase/squash/etc 它们:

git rebase -i HEAD~3

(参见 Sébastien 的解释!)