这很奇怪。根据我的本地develop分支和远程develop分支进行重定位显然有一些不同。以下是一些细节:
因此,假设我有一个特性分支,feat,我不时地对其进行重新定位:
git pull --rebase origin develop这很好用。但现在,我已经做好了准备,准备压制我的提交,我注意到以下两个方面有很大的不同:
git rebase -i origin develop和
git rebase -i develop前者向我的编辑器提供了来自develop的大量提交列表,其中没有一个是我在feat上的更改。它还将我切换到develop分支。后者只在feat上提交了我的编辑器,并且没有将我切换到本地develop分支。
git rebase -i origin develop是否真的将我切换到本地的develop,然后根据遥控器进行重定位?我应该先git checkout develop; git pull,然后是git checkout feat; git rebase -i develop吗?
发布于 2013-09-06 22:07:13
git rebase -i origin develop不是用于rebase的正确语法。
git rebase -i develop
# or this, for the remote-tracking branch
git rebase -i origin/develop是正确的语法。
git rebase说这是一般的语法(省略了一些清晰的选项):
git rebase [-i] [<upstream>] [<branch>]其中<upstream>是一个分支:
使用git rebase -i origin develop时,origin是远程的名称,而不是分支。如果要针对origin/develop进行重基,则需要使用路径分隔符/。
git rebase -i origin/develop至于你的问题:
git rebase -i origin develop是否真的将我切换到本地开发,然后在远程环境下重新建立基础?
它可能切换到您的本地develop,但由于语法甚至无效,我不能百分之百确定。我说的原因可能是因为当您通过一个有效的上游分支和另一个分支时,rebase的行为是先签出第二个分支,然后再根据第一个分支进行重基:
如果指定了
<branch>,git rebase将在执行任何其他操作之前执行自动git checkout <branch>。否则,它将保留在当前分支上。
最后,如果本地git rebase -i develop与git rebase -i origin/develop 不是远程跟踪分支origin/develop的最新更新,比如git fetch,并且从不将更新合并到本地develop中,那么develop和可能是不同的。
https://stackoverflow.com/questions/18666170
复制相似问题