git pull rebase,同时保持远程位置

问题描述

我有一个提交A B C的本地仓库和一个提交D E F的远程仓库。在他们的历史上并没有什么共同点。

我想要拉远程提交,并将它们放在本地提交的顶部,以便最终得到: A B C D E F,其中F为HEAD

我尝试了git pull --rebase,但是将本地放在首位:D E F A B C

如何通过回购而忽略他们的不同历史,从而使他们遥遥领先于本地?

解决方法

git pull --rebase当然是git fetchgit rebase origin/<branch>的组合,因为您不能在不重写服务器历史记录和因此要制动其他人的分支。

如果您确实需要这样做:

  1. git checkout -b <new> origin/<branch>使用D E F创建新分支
  2. git rebase <branch>立足于A B C
,

我可以从您的情况中推断出什么,我们假设存在以下历史记录,并且当前分支为“本地”:

      A---B---C local
     /
D---E---F <master/remote>

您可以执行以下两项操作。

从这时开始,以下两个命令之一的结果:您可以检出分支并将远程基础重新建立到分支上。

git rebase master
git rebase master local_branch

              A'--B'--C' topic
             /
    D---E---F master

注意:后一种形式只是git checkout topic的缩写,后跟git rebase master。重新设置基准退出时,主题将保留为已签出分支。