要理解git的使用原理,就要知道团队协同开发的概念。就目前我们掌握的知识来讲,如果想要多人开发同一个项目,那只能通过拷贝的方式
A和B同时开发了一个项目,同时拷贝给C,由C进行整合,这样做从理论上来说可行,但是会存在很多问题,比如A和B有相同的命名的类或者包名不相同,或者A和B遵循的语法规则不统一,那么在整合时工作量就会很大,还可能会出现一些问题
比如A和B同时创建了一个同名的Servlet,在各自的iede上都能运行,但是当他们拷贝给C的时候,明显在C那儿会出现问题,只要开发过程中规范有一点误差,都会造成问题。
那么怎么解决团队协同开发的问题呢?
##解决方案是这样的:
1、由C创建一个项目
2、C将创建的这个项目1上传到一个远程仓库
3、4:A和B去这个远程仓库下载这个项目,于是A和B的本地就同时又两个相同结构的项目
至此,就解决了项目初期的结构不同的问题,然后A和B开始做开发。
开发时:
5:A创建了一个aServlet,并将它上传至远程仓库
6:B同时也创建了一个aServle,也将它上传至远程仓库,但是这时上传不成功,因为远程仓库中已经存在了一个aServle的文件,发生了冲突。
7、于是B就将他的aServle改名,改成bServlet
8、再次上传,于是上传成功了。在远程仓库里的项目就同时包含了aServlet和bServlet
还存在一个问题
当远程仓库中的项目中同时存在一个文件,里面有aaa的内容,当A和B同时下载到本地时,他们本地的这个项目也都会有aaa的内容
这时A往项目1中添加了bbb的内容,而B往项目1中添加了ccc的内容
当A往远程仓库提交上传项目1的之后,远程仓库的项目中就有了A添加的内容
这时如果B将自己的项目上传到远程仓库,那么就会将A提交的内容覆盖,值留下B的内容,在实际的开发中,这种情况显然是不允许发生的。那如何解决这个问题?
解决的方案是通过版本监控来进行版本的管理
就是说,在C将项目1上传到远程仓库后,会给项目1添加一个版本号,那这是如果A和B去下载这个项目,他们下载的项目就是版本1
这时A和B同时在项目1中同一个文件下写入不同的内容
A的手速比较快,写完之后他将自己写的项目提交到远程仓库,只有版本相同才能允许提交。远程仓库的内容就变成了A所提交的内容,因为做了修改,所以远程仓库中的项目由版本1变成了版本2
这时B也想提交自己的项目,但是提交到远程仓库首先会比对版本,因为远程仓库是版本2,而B提交的是版本1,版本不同,这种情况会给出提示,如果B还是要强制提交,那么他提交的内容就会覆盖远程仓库上的内容,这种情况会被打死。实际做法应该是这样的:
B再去下载一次远程仓库的项目,这时B本地的项目中就有A修改过的内容和他自己添加的内容,B本地的项目版本也变成了版本2
这时他再去提交,远程仓库的版本和他的版本一致,就可以提交成功,远程仓库的项目中就会有A和B修改的内容,对应的,版本也会发生改变,生成新的版本
这就是版本管理,当然版本管理并不是靠人工完成,人工进行版本管理工作量会特别大,加上每提交就生成一个新版本,如果项目很大,提交多次,版本很多个,靠人工管理并不现实。
总结:在团队协同开发时,首先会对比提交的版本与远程仓库的版本,如果版本一致则提交不会出现问题,如果版本不同,则不允许提交,这时就需要一个管理版本的工具来进行管理,也就是我们要学习的Git。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)