问题描述
我有一个提交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 fetch
和git rebase origin/<branch>
的组合,因为您不能在不重写服务器历史记录和因此要制动其他人的分支。
如果您确实需要这样做:
-
git checkout -b <new> origin/<branch>
使用D E F创建新分支 -
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
。重新设置基准退出时,主题将保留为已签出分支。