多人如何高效协同coding
- 如何更改好的管理代码?
- 多人协同修改代码,怎么保证代码不冲突?比如某两个前端工程师都编写某个css样式?
- 有什么好的经验可以分享?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
发布评论
评论(9)
回答下
多人协同修改代码,怎么保证代码不冲突?比如某两个前端工程师都编写某个css样式?
这个代码冲突的问题,不是工具能解决的,不管你用svn,还是git。设想一下,两个人同时修改一个文件的同一行代码,怎么可能不冲突?
之前遇到过一个同事,本次提交代码的时候,都会提交一大堆文件,问他为什么不早点提交,他的回答是:怕冲突。
我想说的是,怕冲突的解决办法不是迟迟不提交,反而应该是时时提交,并且时时更新对方的代码。
只有你的代码一直保持和版本库中同步,才能尽可能的避免冲突
试用极限法说明:
你从版本库中checkout出最新的代码,然后一直在上面修修改改,一年没提交。一年之后,你打算提交了,这个时候你的本地work中是一年前的状态,而版本库中早已经面目全非了,这个时候你提交,肯定会有很多冲突,说不定你修改的很多文件,在版本库里都已经不存在了。
另一种情况: 团队中的每个人,每修改一个小的功能点就立即提交,并且更新最新的代码。A修改了index.html中的第一行提交了。如果5分钟后,你也要修改index.html中的第一行,你应该更新该文件到最新版本,在A修改过的基础上再做修改,然后提交,肯定不会冲突。
说了这么多,只是想说,工具不能帮你避免冲突,想避免冲突,应该要有经常更新版本的习惯,这也是新人经常忘记的事情
做一些补充。
不知不觉就跟着前几个答案走进版本管理这个节奏里了。
版本管理的同时也不能忘记:与版本管理同样重要的,是项目的进度管理:
- 项目本身总要分解成为若干个需求,对各个需求指派负责人和工作计划。
- 软件出现BUG的时候,总要有Bug Tracker系统,允许提出和解决bug报告的工单。
良好的项目进度管理,是避免各自工作“撞车”的不二法门。
这个系统可以不是成型的系统——如果项目足够小,开发者口头或开会商量一下就行了。不过如果项目大了,就一定要用。我了解不多,只推荐一个trac,这也是WordPress的代码分发与bug管理采用的系统。
不过trac似乎还是偏重代码和bug管理。工作计划管理,可能还需要别的工具?
还是那个原则:高内聚,低耦合。如果能够合理管理避免撞车,那么每个人修改的东西,一定会比较严格的分布在各自不同的模块和文件中。做好自己的事情是第一位的,与其他模块建立联系是第二位的。所以不同的修改之间发生了冲突就要敏感的感觉到:冲突一定不会涉及太多的代码,尤其不会涉及各自业务逻辑的主体部分。
如果在冲突的合并处理中,发现违反了这个直观感觉,就一定要审查双方的实现,即使纠偏,让各自的代码之间解除不必要的纠缠。一定不要拖延到问题越来越复杂,最终无法收场。
目前来看git是不二之选。合并-冲突处理机制非常容易维护,事实上不怎么需要有一个明确的项目管理员去主持。
svn的麻烦在于文件锁。因为谁锁文件引发的扯皮,在只有svn的那个年代无数次的发生过。
svn以我的看法,估计只有单人项目时,比git更加方便。
不过git或svn都只是工具。从编程思想上,一定要保持代码的模块化,明确各部分代码分工,必要时使用某种框架。简单的来说,就是功能不存在冲突,分别修改后互不影响的代码,一般不放在同一个文件里。
如果每个代码文件都像一大锅稀粥一样,那……只能说什么版本管理都不是神仙。
git还有sourcetree
项目管理工具有很多了。trello,tower。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
说一点个人浅见
相比于用什么工具,最重要的,是明确人与人之间的协作机制。明确如何分工、如何交流、如何协调进度,等等。
你在问题中提到
如果两个人编辑的是同一个文件中的不同的部分,那可以靠工具解决。如果是同一个部分,那说明你们的分工做的不够好。
如果解决了管理上的问题,那就可以考虑用什么工具的问题了。个人强烈推荐 git,前面几位朋友讲的很详细,我不赘述了