zoukankan      html  css  js  c++  java
  • 一个看起来不像中年人的中年人,带着两个初出茅庐的小伙子儿,用git管理项目代码的进击之路

    一个中年人的孤独前行

    我们这一代人,是上个世纪的人,活在当下,已然成为社会上的中流砥柱。

    80年代生人,遥望我们的父辈,均是5、60年代的人,迟迟暮年,夕夕老矣。而我们,正当年,却又时光飞逝,很快便要围炉话当年。别说是80后,即便是90后,在00后,10后的眼里,我们这些人都是上个世纪的人,是古人。

    作为不知不觉步入中年的我,我们,不愿记起自己的年龄,女士们也不愿细赏自己岁月的容颜。但是,时间就是这样,不会因为我们的不愿,作任何的停留,依然滚滚向前。

    在外工作过,打拼过,拼得一二手艺傍身,也落下一身的病疼,却坚持着前行,除此,还能做什么。

    青春不在,年轻的我早已远去,没去过大城市打拼过,没进过顶级的大公司工作过,所学所得也只能是三流水平,在自己的家乡城市,继续奋斗。

    作为一个后端开发人员,在北大青鸟学习过,从Java起家,做过J2ME,Android,后来自学PHP,一用至今。去年回北大青鸟做教员,前不久又离职,到企业里工作了。工作都不是很稳定,没有在一家公司待过很长的一段时间,在小城市的小公司,这种情况有主观也有客观原因。

    和小伙子们一起走天涯

    前不久,刚进入现在这家公司。能顶大梁的,也就只有我一人,其他两个,都是从达内刚毕业的小伙子,一个能干活,另一个基本干不了,但是工作态度还算好。跟我们一起来的,还有一个40多岁的远哥,一周后就走了。

    刚开始,是远哥带队,资历比较深,行业经验也很丰富。代码协作工具,用FTP。我说,这样容易引起代码覆盖问题,远哥答道,临时用用。嗯,临时就临时。远哥走后,我用我熟悉的Subversion,来让团队做代码管理工具,用的很顺手。在这之前,我学习了git,没有特别系统的学,跟着廖雪峰的博客入门的,然后又把在青鸟开发的小工具在github上托管了,算是学成之后的实践,基本操作算是没有问题了。

    后来那两个小伙子说,在学校的时候也用git,于是我们就把代码管理迁移至git了,希望解决用svn时的烦恼。

    svn用的很顺手,版本revert也很好用,但是分支管理不是太好,所以,寄希望于切换到git之后,能体会到它强大的分支管理功能。

    参不透的禅

    代码从svn切换到git后,两个小伙子有些蒙圈,代码提交都不是很熟。我自己又学习了些git的版本 reset 和 checkout 操作,给他们做了一个简短的培训。

    其实如果单纯的用git的命令行工具,可能在某些地方不如 TortoiseSVN 好用,比如文件比较,git命令行就不是特别直观,尤其差异比较大的时候,Side by Side的形式,能很容易看出差异点。

    使用git以来,一直让我困惑的地方在于,如何用它强大的分支管理,来管理对应的代码产品线。

    目前,我们只建了2个分支,master 和 dev,master对应正式线上的代码,dev上提交正在开发的功能代码。目前我们三个开发人员,每个人负责开发一个功能,分别对应 feature1、feature2 和 feature3,我们把这3个功能都提交并推送到了dev分支,这样大家都可以共享代码了,现在,我负责代码上线,需要将 feature1 和 feature3 上到正式线,而 feature2 暂时不上,此时,如果我切到 master 分支,进行 git merge dev,是不可以的,因为这样会把dev分支上新提交的3个功能,都 merge 过来,这样在将代码上到正式线的时候,可能暂时不需要的 feature2 的功能代码,会影响到线上代码。

    我也搜索了相关的解决方案,可以用 cherry-pick,但是 cherry-pick 后,会生成新的 commit id,而并不是真正的 merge 过来,虽然也能达到想要的效果,但心里总是膈应的,隐隐觉得不妥。

    我现在已经比较理解工作区、暂存区、代码仓库之间的关系了,理解之后,用 reset 和 checkout 坐时光机来回穿梭,确实非常爽,但是分支合并这块,还没有参透,忘各位指点一二。

    每个人仅有的十年

    我不止一次的对别人说过,我要用我一生的时间,学会这几样东西:git、linux、vim。把这些放到一生的时间里去学习,有两层意思:一是因为它们确实不太容易学,学习曲线比较陡,二是因为我是一个超级、非常、特别严重的拖延症患者,用一生的时间,意思就是,心情好的时候再说吧 :)

    最近我想了想,其实我们每个人都只有十年时间。人生的前20年,都在上学,30岁之前在练剑,而真正黄金的十年,就是我的现在,一个中年人能抗大梁的鼎盛时期,过后,再无十年。

    小阴谋

    关于 git 如何合理的用分支管理代码的问题,困扰我多日了,想着写一个贴,求教求教,但想着如果仅仅是提问帖,感兴趣的人恐怕不多,所以,写成自己的历程,可能更有看头一些。

    急功近利,是为了解燃眉之急;潜心练剑,是为了功成之日,独步武林。等心情好的时候,一定要通读一边 Pro Git,探究其中的精髓所在,那时,便能游刃有余了吧。

  • 相关阅读:
    Group_concat介绍与例子
    国家大学科技园名单
    shell截取第五行第三列
    (Deep) Neural Networks (Deep Learning) , NLP and Text Mining
    28款GitHub最流行的开源机器学习项目,推荐GitHub上10 个开源深度学习框架
    SpeeDO —— 并行深度学习系统
    BrandZ:2016年全球最具价值品牌百强榜(完整报告)
    jdk1.7升级到jdk1.8后出错: [ERROR] javadoc: warning
    伪基站收集方圆500至1000米范围内的手机卡信息,并且通过伪基站设备伪装成银行、中国移动、中国联通等任意号码向手机用户发送短信或拨打电话
    360手机助手内部资料曝光,63张PPT纯干货
  • 原文地址:https://www.cnblogs.com/bananaplan/p/how-to-use-git-to-manage-your-code.html
Copyright © 2011-2022 走看看