git pull [remote] [branch]
在一些情况下会出现问题,比如说分离分支等问题,其实git pull
= git fetch
+ git merge
,git fetch
用来将远程仓库在当前git库中创建一个[remote]/[branch]远程分支,然后merge remote/[branch]将远程分支和本地分支合并。
git pull --rebase
= git fetch
+ git rebase
,rebase和merge是两种不同的合并方式,rebase是线性化,merge就是比较复杂的合并方式。rebase后,会生成新的commit版本,但是备注信息居然会沿用。而merge不会这样。
上述操作,实际运行时会有一些问题,比如你新建的git仓库,做git fetch操作时,会告诉你“没有共同提交”,再git merge时会报错“拒绝合并无关的历史”。
那该如何解决呢,其实主要就是git merge的问题,也可以避免merge而使用rebase,直接看代码:
git pull --rebase [remote] [branch]
#或
git pull [remote] [branch] --allow-unrelated-histories
#或
git fetch [remote]
git merge [remote]/[branch] --allow-unrelated-histories
成功解决!