一、git中不同人修改了同文件的同一区域如何处理?
①首先,2个用户先使用git pull命令把仓库更新下:
git pull
②张同学修改了代码,在代码最后新增了:张同学测试成功!
并提交到本地仓库:
$ git commit -am"Add 张同学测试成功!"
③而且,张同学一修改完,就直接push到远端了:
git push
远端代码情况:
④与此同时,江同学也修改了代码,在代码相同位置处新增了:江同学测试成功!
并提交到本地仓库:
$ git commit -am"Add 江同学测试成功!"
⑤江同学也打算推送到远程仓库,此时看下会发生些什么:
git push
发现推送报错。
那么该如何处理呢?
①你push的时候报错,说明远端变了,因此,需要先进行一下pull操作:
git pull
但此时pull也失败了,提示git自动merge失败,有文件冲突了。
②如何解决冲突呢?这里用到的是命令行方式。在文件里找到出现冲突的位置:
这里需要人为手动解决冲突。
将git冲突时产生的提示符删除,修改代码中需要保留的信息,保存退出。本次修改为:
③现在,我们看下当前git的状态,这里还需要进行一次提交才行:
$ git status
$ git commit -am"Resolved conflict by 保留为:江同学测试成功"
④本地的冲突解决掉之后,我们要及时的把这个commit push到远端去:
git push
只有push上去了,其他同学才能拿到我们最新的代码。
⑤此时,我们再到github上看下现象:
已经修改为:江同学的代码啦!
保留了需要的代码,冲突解决!
二、git中不同人修改了同文件的不同区域如何处理?
这种情况就比较简单了,git会自动合并。
①例如,A同学在代码前面新增了:
并提交到远程仓库。
②B同学在代码末尾新增了:
③这时,B一般pull前先git push拉一下远端最新代码,会与本地仓库的自动merge。(不需要再次commit提交了)。
④B的本地仓库代码情况为:
B再git push提交到远端:
总结:注意点就是每次push代码前先pull一下,保证和远程的最新镜像保持一致。如果不放心的话,可以本地备份一下自己修改的代码哦!