Git fast forward push

当只有一个人提交代码给远程分支的时候,本地push就叫做 fast forward.发生的操作是:


Git会在远程讲本地的commits add  on 到当时clone的那个基础提交之上。And git 会做一个叫做fast forward的merge option,讲本地的refs指向最新的提交


当有多个人协作的时候,比如两个人,A和B在同一个时点clone了代码,B先提交了commits,A后提交,在A push的时候Git就会报:

$ git push

To /tmp/Depot/public_html

! [rejected] master -> master (non-fast forward)

error: failed to push some refs to '/tmp/Depot/public_html'

这个时候就是 non-fast forward,简单的说就是Git不能简单地把A的提交添加到origin,因为B已经提交过,对于B提交的历史,这个时候Git不能自动判断是合并呢还是直接覆盖。大多数时候我们先要git pull,这个命令的意思是把远程的更新拉下来并且与本地的合并,如果有冲突就改掉冲突,这个时候会生成一个新的commit。如果没有冲突,那就是讲B提交的合并到A本地最新提交的一个commit,没有产生新的commit.然后提交就不会报错了。

你可能感兴趣的:(Gitlab)