主题:non-fast-forward 错误提示

一、non-fast-forward是怎么发生的?

       前提:假设tomA和tomB同时将远程master分支上的代码克隆到本地,两人同时在这个分支上面进行开发。当tomA开发完一个功能时,将本地的代码就推送到了远程master主分支,提交message为:commit-02-tomA。这时tomB的功能也开发结束了,在没有获取远程最新的代码的时候,直接就做了推送操作,此时就会出现下面的错误(fetch first):

Fetch First
更新被拒绝,因为远程包含本地没有的工作。这通常是由另一个存储库推送到同一个ref造成的。您可能希望在再次推送之前先集成远程更改。

我们按照错误提示,使用git fetch origin master指令获取远端最新的代码,然后再做一次推送操作,此时将会出现下面的错误:

non-fast-forward
更新被拒绝,因为当前分支的提示位于远程分支的后面。在再次推送之前集成远程更改。

那么怎么才能将这次的修改顺利的推送到远程呢?我们还需要做什么操作吗?

       对于上面出现的non-fast-forward错误,我们有两种解决办法。一种是rebase,一种是merge操作。下面我们以第二种方式来解决这个问题。

  1. 在bash窗口我们执行git merge origin/master 指令将远端的代码合并到本地库。如果有冲突的话,需要手动解决。
  2. 冲突解决完成之后,我们需要将冲突的修改做一次提交,就像下面这样:
  3. 最后通过git push origin master将代码顺利的推送到远程库中。
git merge --continue:当没有下一个冲突需要解决的时候,直接进入冲突message画面,我们可以使用默认的冲突message来作为本次解决冲突的提交message

二、git fetch 到底做了什么事情?

       在项目中开发完一个新功能的时候,需要将本地的更新推送到远程库中,按照上面的说明,我们先获取远程最新的代码,然后再进行推送。git fetch命令会将远程库中的数据拉取到本地仓库,它并不会自动合并或者修改你当前的工作。这个时候你必须手动将其合并到你本地的分支中。

三、那么git pull命令与它又有什么区别呢?

       从操作的过程就可以看出:git pull origin master,相当于git fetch + git merge。即从远程库中获取最新版本并merge到本地。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值