提出问题
git push
远程仓库时,经常报出如下错误,导致无法将本地仓库中的内容提交到远程仓库。
基本介绍
-
首先,报出错误:
non-fast-forward
-
其次,根据我们在连接远程仓库时,执行的配置命令
$ git remote add <远程仓库的别名alias> <远程仓库的url>
可以得出,远程仓库:
origin
-
然后,远程分支:
master
-
最后,本地分支:
master
解决方案
-
首先,根据 Git 提示
hint: 'git pull ...') before pushing again.
,执行git pull
命令把最新的内容从远程分支(origin/master)拉下来$ git pull
-
然而,会报出如下错误,并给出提示:
这是因为没有指定本地 master 分支和远程 origin/master 的连接 -
然后,根据提示,执行
git branch --set-upstream-to=origin/master master
,创建本地 master 分支和远程 origin/master 分支的连接$ git branch --set-upstream-to=origin/master master
-
接着,在命令行执行
git pull
,进行代码的拉取:$ git pull
可能还会报出其他错误,如图所示:
此错误,是由于本地仓库和远程有不同的开始点,也就是说,本地仓库和远程仓库没有共同的commit
而出现的无法提交。因此,需要使用在执行
git pull
时,添加--allow-unrelated-histories
参数,命令如下:$ git pull --allow-unrelated-histories
-
另外, 也可以不设置默认分支,直接执行
git pull origin master
:$ git pull origin master
但还可能产生其他
conflict
,如图所示:
此时,需要自己手动解决冲突再merge
,这里不再多加赘述。