首先要明确冲突是在什么场景下会发生,譬如最简单的:
你作为用户A在本地commit了一次名为'aaa'的记录,却还没push上远程仓库,以下是你的本地仓库指针指向,从上一次'test'指向当前的'aaa' :
但在远程仓库其他开发者已经在'test'之后完成了一次commit 'vvv',并push上了远程仓库,那么远程仓库的指针指向会是如下这样,但由于你上一步的commit仅仅是本地,所以现在远程仓库不能看到你本地的commit:
因此每当你要准备将你本地的commit push到远程仓库时,你得先把当前远程仓库的代码往你本地拉一次(git fetch),为什么这里说的是fetch而不是pull,pull其实包含了fetch 和 merge两个动作,先fetch到远程仓库此刻最新的代码,merge采取fast-foward的策略,如果你本地的文件修改和fetch到的文件修改没有产生交集,则pull是一次完美的拉取,要是产生交集那么文件就发生冲突了,需要手工merge才能完成,因此笔者这