背景
温习git的使用方式,尤其是多个用户共同控制一个仓库,在推送文件修改时,发生冲突时该如何解决。
准备
以下的实例是在gitee上进行的
1、需要有一个gitee仓库。
2、该仓库内有多个用户管理。
通过仓库的管理,增加管理人员,对另一个用户发出邀请。另一个用户可以通过查看私信,加入到仓库管理当中3、在idea 当中拉取两次项目,因为要给两个用户提供本地环境
4、要实现切换用户的功能,就要保证idea删除之前的用户信息。
之后就可以重启idea,然后在做推送给仓库的操作的时候,就会弹出需要登录的框,此时就可以登录新的用户信息。但是需要注意的是,绝对不会出现一台机器同时登录这两个git用户的。也就意味着,登录了一个用户后,你打开别的所有的工作空间,都是在这一个用户下进行操作的,只能频繁重新登录完成用户切换。
5、制造git的冲突。
(1)首先两个用户拉取git仓库的最新文件内容。如下图
(2)其中一个用户完成,该文件的修改和增加操作,并完成提交到本地和推送到git仓库。
先commit,提交需要写提交注释。
此时的修改是既修改了原内容,也增加了新的行内容。
再完成push,此时git仓库的文件已经是修改之后的内容了。
6、此时gitee2用户,在没有重新拉取项目的同时,对一个文件的内容完成修改。如下图
第二个用户修改前的样子是用户1提交之前的内容
用户2也完成了修改
然后完成commit和push操作,然后出现下图,告知你出现冲突,需要解决冲突
然后可以直接点击merge,就会出现下图
可以看到非常清晰的三个模块,分别是当前你的内容、上一个版本的内容、最新版本的内容,其中中间上一个版本的内容是供你把最终合并的内容填写进去,之后就可以apply 来完成冲突的解决,如下图
我在中间的模块,合并了冲突,此时点击Apply,之后继续点击点击AppliyChanges and resolve conflict。之后中间模块的合并内容就在源文件中展示出来了。此时之后合并了冲突,需要继续完成提交和推送的操作,就可以把冲突解决后的内容推送到git仓库了。
总结
注意
:
(1)上述提到了,一台机器不可能有两个git账户同时操作的情况,所以如果想要实现多用户提交文件到git仓库的操作,需要频繁操作idea的退出清理,登录用户提交内容、之后退出清理,再登录另一个用户提交内容,此时才可以在git仓库看到两个用户分别提交的操作。
(2)上述的操作背景是要温习,git发生冲突的解决,所以要模拟两个gitee用户,所以把gitee切换用户的操作也讲到了。
但是如果单纯的想要测试git冲突的解决问题,可以把一个git项目拉取到两个空间中去,用一个用户就可以实现。因为两个本地库、本地文件的内容不是同步的,所以当一个发生修改并提交之后,另一个在修改同一个内容之后,需要对本地库和本地文件的内容完成合并才可以,否则不可能让第二个空间完全同步第一个空间,或者在不解决版本冲突的状态下去推送内容。