tl;dr
如果只有你一个人在一个分支上工作,完全可以从origin pull再rebase,紧着着用git push --force解决push分支时被reject的问题。
我工作的时候经常碰到这个问题:同事的pull request被merge到develop,我pull回来,把本地feature分支rebase到develop上,到这一步没有任何问题。但是如果我在这个rebase之前已经把一些本地feature分支的commits push到我的fork,那这些fork上的commits就会reject rebase之后的push了。用git push --force确实可以解决这个问题,不过总感觉这个并不必要的--force好可怕。
然后我就在stackoverflow上看到了完全相同的这个问题,被采纳的答案消除了我害怕用--force的疑惑。这个回答下面的第一条评论确实也可以解决这个问题,但是就会有完全一样的commits重复出现一次,在git log里看起来实在不好看。
我想大家可能也碰到过这个问题,所以把这个问题和回答分享在这里,希望会有帮助。
bearzk



