场景
最常用的场景,你作为团队一员,要进行日常开发拉取推送操作,这篇文章所讲的常用操作都需要先获取。
拉取不推送
获取操作发现远程有新提交,本地未修改代码需与远程仓库代码同步,这种情况本地没有提交,远程有新提交,需要与远程代码保持一致,本地为干净分支,直接拉取即可,不会产生冲突。
推送不拉取
先获取,看远程有无比自己更新的提交,如果没有表明本地就是最新提交,可以直接推送,不会产生冲突,有则不能直接推送,如果直接推送,可能有冲突 ,如有冲突最好在本地解决完冲突再推送至远程。
拉取且推送
无冲突
远程有新提交待拉取,本地有新提交待推送,可能有冲突,所以不能贸然拉取推送,获取之后,看看远程新提交是否与本地新提交冲突(但挺难看的,所以一般大眼一扫,没修改同一文件就算不冲突),不冲突直接拉取并推送,简单高效。
有冲突
直接拉取
如有冲突,那就要解决冲突,这里有两种方式,本地提交后直接拉取远程在主分支解决冲突,这种不安全,因为直接修改了主分支,可能解决途中有错,虽然有回滚,那有点繁琐,以及当你需要处理一些紧急bug时,此时没有干净的分支。
新建分支
第二种就是新建一个分支,本地未提交时新建分支,工作区提交至新分支,在新分支拉取,有冲突也在新分支解决冲突。原分支完全不受影响,解决完冲突合并至原分支,原分支再推送至远程分支即可;也可以新建分支提交后,在原分支拉取(原分支无提交为干净分支,无冲突),再把原分支和新分支合并,解决冲突,再合并回原分支后推送。
解决冲突是怎么解决的
IDE
一般是拉取后产生冲突,文件会出现双方各自的代码,在ide中你需要逐个删除代码解决冲突,比较麻烦。
VSCode
去VSCode或类似VSCode这种比如Trae里处理冲突,VSCode中在冲突地方提供按钮选项选择旧代码/选择合并过来的代码/保留双方代码,只需点击即可,较为方便。
补充
关于获取操作,本地一般有远程分支镜像,或看作远程分支在本地的缓存,获取后会更新本地的远程分支镜像,获取最新代码、分支等等,获取一般是为了在拉取推送前看远程代码、分支情况来决定采用什么操作。