今天看checkout, branch, switch功能, 都震惊了, 分支和commit的关系难道不应该在第一步就设计好吗? 到了2.23 才觉得checkout功能承载太多,于是分裂出两个新的命令。
关键branch和switch功能还是重叠的。
git的发展过程, 很明显就是凑合,再凑合, 然后改改, 继续凑合,结果文档虽然庞杂,在github的加持下拥趸也不少, 但功能设计就是一笔糊涂账。
对比mercurial, 人家从一开始就设计的好好的,到现在这些概念也没有变化过。版本是版本,分支是分支,拉取就是拉取, 推送就是推送。
git的pull还附带合并,我特么就是同步一下仓库,怎么还把我的当前源代码给改了,当初发现这一点的时候心里一万头马儿奔过.
还有版本游走, 网上一堆git教程说用reset,这个应该能坑不少人. 要是reflog也被删, 基本就哭去吧. mercurial的版本游走就让人很放心,想走到哪个版本到那个版本,根本不用担心说回到某个历史版本后, 此后的提交全被删的问题。
软件产品这东西,不是说某个顶级coder搞出来的就nb,产品力跟code force根本是两个维度的东西,但是产品需要的, 首先确实就是产品力.
难怪我周围一堆高手, 都很鄙视git. 用也是捏着鼻子用.
--
FROM 120.244.224.*