如果我在本地将修改后的 master 重新定位到我的 banch 之上,为什么我必须在推送之前从远程拉出我自己的分支?

why do I have to pull my own branch from remote before push if I rebase modified master ontop of my banch locally?

如果我已经将修改后的 master 重新定位到我的 banch localy 之上,为什么我必须在推送之前从远程拉出我自己的分支?

我在我的开发分支上工作,同时有人更新了 master 分支,所以我在我的开发分支上重新设置了 master 分支,并从远程的 master 分支获得了最新的更改。

现在,当我执行 git status 时,我收到消息说我的 devbranch 已经偏离 origin/devbranch。

git状态建议git拉。 这样做会提示我修改合并消息。

之后我就可以推了。 如果我不执行上述操作而只是执行 git push 它会被拒绝。 我的印象是,如果我在我的开发分支中有更改并且我包含来自 master 的更改那么它不应该限制因为我的开发分支的 HEAD 在本地已经移动,并且上游在本地跟随我的分支!

so I rebased master branch on my development branch and got latest changes from master branch on remote.

这毫无意义,您通常不会在某些功能分支上变基 master。我认为你实际上做的是相反的,即将你的开发分支重新定位在 master 上以引入最新的变化。

完成变基后,您重写了开发分支的历史。这有效地造成了一种情况,即您的本地开发分支现在与远程版本不同。解决这个问题的典型方法是强制推送:

git push --force origin development

这将用变基版本覆盖远程开发分支。