git 在不使用分支的情况下变基

git rebase without using a branch

假设我没有使用 branch(我在本地 master 分支上工作,origin 是远程服务器上的 master 分支)。想知道命令的功能是什么?我的困惑是有时我看到人们使用这个命令在不使用分支的情况下成功合并本地更改(主远程服务器分支上的更改),但我可能是错的但我认为 rebase 仅在您在分支(master)上工作时才有效并且与其他分支合并?

git rebase -i origin/master 

origin/master 就像 master 一样是一个分支。它基本上跟踪远程主机上的任何内容。

当您从 master 运行 git fetch 时,它将从您的远程主机获取所有提交并将其放入 origin/master。如果你然后 运行 git rebase -i origin/master,会发生这种情况:

  • 所有不在 origin/master 上的提交都被暂时搁置
  • 你的 master 更新了 origin/master
  • 上的任何内容
  • 您的提交会在您更新的 master
  • 之上重播

因此,如果您首先手动 fetch 然后 rebase,那基本上就是手动执行 git pull --rebase 会执行的操作。

顺便说一句,你也可以rebase到你自己的分支上,例如:git rebase HEAD~2。这将让您重新排序(或以其他方式编辑)当前分支上的提交。