多语言展示
当前在线:380今日阅读:113今日分享:31

GIT学习--(18) GitHub多人协同工作(五)

多人基于一个GitHub远程仓库协同工作,就类似程序开发中多线程并发操作某一资源的场景,很容易会产生冲突,我们前面已经通过4篇经验介绍了4种冲突情况,这里再介绍最后一种常见的冲突情景:两人均对同一个文件进行重命名操作!对于这种情况,Git 会如何处理呢? 这篇经验就给你答案!
工具/原料
1

一台安装了Git并可以连接网络的电脑(多个本地仓库模拟多人协同办公)

2

一个创建了远程仓库的GitHub账号

方法/步骤
2

用户 ZhangSan 修改了文件 index.html 的名称为 index1.html , 并成功推送到了  GitHub 远程分支上 ,运行的命令如下:1. git mv   老文件名   新文件名             // 文件重命名操作 2. git commit -m '提交注释'                // 将变更提交到本地仓库 3. git push 远程仓库别名 分支名称        // 将变更推送到远程仓库

3

用户 LiSi 同样修改了该文件,将文件名从 index.html 修改为 index.htm ,在尝试推送到远程分支上时,报错了。错误信息提示,用户远程仓库该分支下包含了LiSi本地仓库该分支没有的内容,也就是说,有人推送了变更,LiSi 没有及时更新!LiSi同样进行了如下操作:1. git mv   老文件名   新文件名             // 文件重命名操作 2. git commit -m '提交注释'                // 将变更提交到本地仓库 3. git push 远程仓库别名 分支名称        // 在这步报错了

4

用户 LiSi 只能通过 git pull 命令再度更新一下本地仓库的该分支,这次还是报错了,从错误信息上看,LiSi 发现原来有人已经将这个文件更名为 index1.html 并推送到了远程分支上, Git尝试合并变更,发现有冲突,合并失败了。此时LiSi的本地仓库包含了这两个文件 index1.html (ZhangSan 更名后推送到GitHub的文件) 以及LiSi自己更名后的文件 index.htm。执行的命令如下:1. git pull 远程仓库别名  分支名称     // 更新本地仓库,但合并异常

5

这时,LiSi需要和ZhangSan进行一下沟通,双方协商一个一致的处理方法,我们这里假定双方协商的处理方案是:保留LiSi的变更,将ZhangSan的变更删除。执行的命令如下:1. git rm index1.html                           // 删除ZhangSan所做的变更 2. git commit -am '提交注释'              // 将变更提交到本地仓库 3. git push 远程仓库别名  分支名称       // 将最终变更推送到GitHub

6

总结:对于协同工作时,出现的这种问题,后推送的人员在发生合并冲突时,需要和提前推送的人员沟通,双方协商一个一致的解决方案,由后推送人员按方案实施变更后,再次提交推送即可!

注意事项

使用 git pull , git push 命令时,当本地配置的远程仓库别名是默认的 origin ,则可以直接使用,否则需要指明远程仓库别名和分支名称

推荐信息