设为首页 收藏本站
查看: 822|回复: 0

[经验分享] 关于Git的礼节

[复制链接]

尚未签到

发表于 2018-1-15 06:26:44 | 显示全部楼层 |阅读模式
  (这里的内容本来是《怎样尊重一个程序员》的一小节,但由于Git的使用引起了很普遍的不尊重程序员的现象,现在特别将这一节提出来单独成文。)
  Git是现在最流行的代码版本控制工具。用外行话说,Git就是一个代码的“仓库”或者“保管”,这样很多人修改了代码之后,可以知道是谁改了哪一块。其实不管什么工具,不管是编辑器,程序语言,还是版本控制工具,比起程序员的核心思想来,都是次要的东西,都是起辅助作用的。可是Git这工具似乎特别惹人恼火。
  Git并不像很多人吹嘘的那么好用,其中有明显的蹩脚设计。跟Unix的传统一脉相承,Git没有一个良好的包装,设计者把自己的内部实现细节无情地泄露给了用户,让用户需要琢磨者设计者内部到底怎么实现的,否则很多时候不知道该怎么办。用户被迫需要记住挺多稀奇古怪的命令,而且命令行的设计也不怎么合理,有时候你需要加-f之类的参数,各个参数的位置可能不一致,而且加了还不一定能起到你期望的效果。各种奇怪的现象,比如"head detached",都强迫用户去了解它内部是怎么设计的。随着Git版本的更新,新的功能和命令不断地增加,后来你终于看到命令行里出现了foreach,才发现它的命令行就快变成一个(劣质的)程序语言。如果你了解ydiff的设计思想,就会发现Git之类基于文本的版本控制工具,其实属于古代的东西。然而很多人把Git奉为神圣,就因为它是Linus Torvalds设计的。
  Git最让人恼火的地方并不是它用起来麻烦,而是它的“资深用户”们居高临下的态度给你造成的心理阴影。好些人因为自己“精通Git”就以为高人一等,摆出一副专家的态度。随着用户的增加,Git最初的设计越来越被发现不够用,所以一些约定俗成的规则似乎越来越多,可以写成一本书!跟Unix的传统一脉相承,Git给你很多可以把自己套牢的“机制”,到时候出了问题就怪你自己不知道。所以你就经常听有人煞有介事的说:“并不是Git允许你这么做,你就可以这么做的!Unix的哲学是不阻止傻人做傻事……” 如果你提交代码时不知道Git用户一些约定俗成的规则,就会有人嚷嚷:“rebase了再提交!” “不要push到master!” “不要merge!” “squash commits!” 如果你不会用git submodule之类的东西,有人可能还会鄙视你,说:“你应该知道这些!”
  打个比方,这样的嚷嚷给人的感觉是,你得了奥运会金牌之后,把练习用的器材还回到器材保管科,结果管理员对你大吼:“这个放这边!那个放那边!懂不懂规矩啊你?” 看出来问题了吗?程序员提交了有高价值的代码(奥运金牌),结果被一些自认为Git用的很熟的人(器材保管员)厉声呵斥。
  一个尊重程序员的公司文化,就应该把程序员作为运动健将,把程序员的代码放在尊贵的地位。其它的工具,都应该像器材保管科一样。我们尊重这些器材保管员,然而如果运动员们不懂你制定的器材摆放规矩,也应该表示出尊重和理解,说话应该和气有礼貌,不应该骑到他们头上。所以,对于Git的一些命令和用法,我建议大家向新手介绍时,这样开场:“你本来不该知道这些的,可是现在我们没有更好的工具,所以得这样弄一下……”

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-435197-1-1.html 上篇帖子: Git 少用 Pull 多用 Fetch 和 Merge 下篇帖子: cmder git bash 使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表