首先声明一点,本文是记录自己所在团队中因为错误的使用git造成的一些问题,绝对没有诋毁git神器的意思,我们都是很喜爱这个工具的。
现在的团队正在使用git作为版本管理工具,但是大家都始终没有很好的用起来,反而因为一些错误的流程或者习惯引起一些问题,在这里做一个总结。
1,团队成员因为分工不同,对于版本管理的认识不同,加上git使用命令行操作,很多同事的基础薄弱,停留在仅仅会用push/pull的程度;
2,git的.gitignore文件的管理,没有搞清楚到底应该忽略些什么东西
3,大家没有及时/小步提交的习惯,都是在下班前才把所有工作做一次提交,并且commit log很不完善,信息和代码不一致,导致后续处理非常麻烦;
4,在处理紧急任务时,往往做一次临时提交,commit log写一些temp等的无用信息,导致引入一些不完整没有测试保证的代码;
5,branch扮演着git中非常重要的角色,但是同事都以自己的名字命名一个branch,并且将其推入远程仓库,导致没有一个可部署的branch,更危险的是,branch和功能(bug)无关,大家各自改自己的,没有一个共同的分支起点等,导致合并非常的麻烦并且危险!
5,pull request / merge request等的缺失,导致代码质量无法得到保障,code review也无从做起;
这些都是很常见的错误,但是引起的问题却相当严重,而且随着项目的不断进展会变得更加复杂和不可控,那么又是为什么会出现这个问题呢!
1,当然是团队成员素质的问题,开始初步了解了一下git,大概清楚之后,便让大家去做一个学习,可是很多同事都仅仅是学会了push/pull便以为大功告成,当然也有一些同事本来是美工或者设计之类,以前也没用过版本管理工具,对这块也没用比较深刻的认识,从而也不愿意花时间去学习(特别是git又是用命令行去敲的)。
2,对工具的使用有一种为了用而用的心态,以为用上了更高级的工具,自己的水平也就提高了,而没有去了解这个工具到底解决了什么问题,它的工作流程如何和应该如何正确的被使用,它有哪些最佳实践等。
最后,团队当然是需要进步的,就这个问题可用看出团队还有相当长的路需要走,但是至少应该从几点做出一些改进!
团队有人提议一个新工具时,应该多鼓励他自己尽量去弄清楚,然后找时间做一个分享,让大家都有一个了解,然后如果是这类关系重大的基础性工具,应该在了解较成熟的基础上对大家做一个培训,一定要学习一个良好的工作流程和规范。
另外,团队这次吸取了一些比较优秀的工作流程,转出来做个分享
http://www.oschina.net/translate/version-control-best-practices
http://www.ruanyifeng.com/blog/2012/07/git.html
http://www.ruanyifeng.com/blog/2008/12/a_visual_guide_to_version_control.html
http://ruby-china.org/topics/15737
http://ruby-china.org/topics/node11