20210121git的push与pull - ziyouzy/2021blog GitHub Wiki

怎么说呢,不是随随便便就能push或pull的
你在push的时候必须保证你当前分支里所有的文件都是比远端新的
否则push操作会先检测远端分支各个文件,如果发现有任何某个文件(如readme)的“日期”比你本地的新,就会push失败
你必须先pull一下
而你也不用担心这个pull操作,他也会先比较一下远端的各个文件与本地各个文件“日期”的新旧程度,只会更新那些“日期”更新的文件
同时他也包含某种机制,决定了更新的方式是“替换整个文本”还是“合并两个文本”
这个机制的判定标准是,以上一次pull操作为“原始时间点”,任何“旧”文件如果“日期”是这个“原始时间点”,则会被“新时间点”的文本直接替换
而如果无论远程还是本地都把某个文件更新了,如pull之后,在远程把readme随便写了几句,在本地也罢readme随便写了几句,那就需要进行“合并两个文本内容”的操作了,是对文本内部逐行进行的对比与替换操作

前者属于类似commit的操作,更新了一个版本,旧代码也会保留,可以通过git reset回滚

后者属于类似本地从一个主分支分离出两个子分支,然后需要对两个子分支去进行合并的操作,合并过程中git无法帮你决定两端地位完全平等的代码需要保留哪句,你只能自己决定

而前者则不然,前者只是“新旧”交替,后者则是在进行“新旧”交替时,你需要自己在设计下“新”的代码