git CLI 设计太烂

2021-12-08 07:18:37 +08:00
 AndyAO

自己用 git 之后,感到由于知识不系统,很多问题都解决不了,就照着《 Git 权威指南》学完。

回想起自己没这么干之前,最大的误解就是认为 git 是 linus 的伟大作品设计是很好的,但是仅从命令行的设计来看,这个东西是极烂的。

如果你上手之后发现总是很难用,有时候很让人困惑,那么不要感到很自卑,本来就很难用,本来就很复杂。

StackOverFlow 上排名前 5 的问题中有 3 个和 Git 有关,这说明大多数工程师在使用中经常会感到困惑。

如果你感觉很简单,那么要不就是「专家谬误」,要不就是你天赋异禀,异于常人。

具体来讲,最容易被看到的设计硬伤是:

实际上,工具越出名,越底层,改进的空间越小。

像编程语言这种东西,基本上就是没有后期修改的,稍微动动就是鬼哭狼嚎的。

例如,Java 字节码自从诞生之后就基本上没改过,连向后兼容的更改都没有。

git 这些 cli 不是精心设计的,被精心设计的只是核心原理,cli 的各种功能是堆出来的,可以说基本上就没有什么设计可言,这个鬼样子也是可以理解的。

等到感到不改不行的时候,往往就已经晚了。

7810 次点击
所在节点    程序员
82 条回复
AndyAO
2021-12-08 07:22:18 +08:00
还有就是 linus 本人对这个工具没有什么兴趣,因为有这个需求,但是总是拖了又拖到最后没办法才自己干,完成最初的版本,能用之后就撂下不管了,后来是社区维护的,完全是自己生长出来的。

这样自发生长出来的东西,往往在设计上就是丑陋,没有什么美感。

生物的基因也是这样啊,里面有大量的冗余的没用的内容,而且基本上不可能有任何的更改。

推倒重来,重新开始,有时候是必要的。
gowk
2021-12-08 08:06:39 +08:00
我认同,但是谁有勇气和能力再造一个 git?
dcoder
2021-12-08 08:23:06 +08:00
git cli 的用户体验确实烂得不行...
cmdOptionKana
2021-12-08 08:29:26 +08:00
github 已经自己出了 cli
461da73c
2021-12-08 08:47:43 +08:00
@AndyAO 用了几年的 git ?建议提高自己的水平,从你看书学 git 大概知道你的水平了,而不是做无脑的抨击,喷不到点上。
imldy
2021-12-08 08:53:57 +08:00
只是命令,可以再套一层吧(=_=)
yyfearth
2021-12-08 09:00:10 +08:00
同意你 L1 的观点
这个做产品和生命树类似
一开始点的技能树后来就算没用了 也会影响之后的决定

想要符合最新的需求而且追求完美 就需要重新设计
但是又要向后兼容

这样的话 其实搞一个新的 CLI 包一层就是了
xtinput
2021-12-08 09:04:04 +08:00
那你去用用 svn
zed1018
2021-12-08 09:08:09 +08:00
@461da73c 非常典型的:我学不会的就是垃圾
balabalaguguji
2021-12-08 09:08:48 +08:00
来吧,SVN 简单快乐,SVN 欢迎你 https://svnbucket.com
AndyAO
2021-12-08 09:08:58 +08:00
人类的基因方面,对生物学没有了解的人可能会不太清楚。

如果你观察胚胎的发育过程,就会发现很多人类根本就用不到的结构,是先生长出来之后然后消亡的。

也就意味着整个胚胎发育的过程就有点像重演了,生物的进化史很多已经没有必要的过程都还存在。

典型的是如果你观察胚胎的话,你会发现人类最开始的时候指头是有蹼的,发育的后期这个结构才会消失。

如果能对人类基因的代码进行大范围的重构,那么人类的整个效率会比现在要高的多的多。
macha
2021-12-08 09:09:32 +08:00
git 只是免费的里面最好用的。
balabalaguguji
2021-12-08 09:11:08 +08:00
表示挺认同楼主
cco
2021-12-08 09:12:19 +08:00
凑合能用,没那么差,也一般般,日常工作没问题,关注点主要放在代码上。
hand515
2021-12-08 09:21:05 +08:00
管它烂不烂,我把常用的命令用熟练,能解决我的问题就好了

另外,说“太烂”,给人的感觉是对别人的工作的全盘否定
zxCoder
2021-12-08 09:28:50 +08:00
git 是否是开源的,能否重新设计一套 cli 命令?
acmore
2021-12-08 09:29:01 +08:00
@AndyAO 非杠,算是根据自己了解的内容来细化和补充:
胚胎发育不完全是进化的重演,最多能算是找到一些演化的痕迹,很多演化树上的东西都不会出现在胚胎里。原因是进化很少重构,都是叠床架屋。
人类物种基因如果重构成纸面上完美的状态会迅速灭绝,因为这意味着人类基因失去了对外界(病毒,自然选择压)的任何应对窗口。当然人类基因和完美是不沾边的,有很大的改进空间。
yolee599
2021-12-08 09:31:52 +08:00
你可以自己再封装一层啊,想写成怎样就写成怎样
ampedee
2021-12-08 09:32:30 +08:00
@461da73c 看书学 git 有什么问题?难不成你能靠 git 的命令行帮助掌握 git 的原理和进阶操作?
你知道 git checkout 有多少种不同的用法么?
git 自己都承认了 checkout 的历史包袱,在新版本推出了 switch 和 restore 来替换 checkout 。

🤡🤡🤡
makelove
2021-12-08 09:38:11 +08:00
没有同感。如果你说的就是重新组织一下一些 cli 的选项名,这不能说是 git 极烂吧,照这标准 windows 不是烂出天际了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/820770

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX