Git 很多命令参数太麻烦了。有些命令参数感觉很混乱,比如明明是创建新 branch,命令却是 checkout -b,而 checkout -- 跟 reset 好像又有点相似。
另外就是本地 branch 远程 branch 很麻烦,为什么要分得那么清楚呢,直接本地远程同步不就行了么。
还有就是 submodule 的用法非常麻烦。
相对来说我觉得 Mercurial 的 subrepo 比 Git 的 submodule 要好用一些。特别是有匿名 branch 和 multiple head 的支持使得 subrepo 的 merge 相对来说比 Git 要简单不少。Mercurial 的命令我感觉也比 Git 简单,除了不支持 stage,以及 branch 模型跟 Git 不一样。但也有插件来实现 stage 和 bookmark。Mercurial 是用 Python 写的,扩展很容易,跨平台也很好。TortoiseHg 虽然丑了点,但功能非常全。
Git差的东西多了去了啊。
首先是像 @vczh 说的那个,rebase这种指令很多余,而且也很危险,更不好用,为了显示好看完全可以在显示层面上解决,还可以彻底避免丢版本的事故。譬如说搞个fold指令折叠一串版本就好了。显示的时候带--unfold参数显示所有版本。
然后是权限控制和中心版本控制服务器,Git没有中心版本控制服务器,GitHub和你本地的Git库是平等的,也没有针对目录和文件夹的权限控制。由于两边是对等的,所以push、pull、remote branch这些概念其实是很麻烦的,用起来很不方便。
如果重新做一个Git的加强版,我会把所有的指令重新整理一下。目前git一个指令身兼数职的情况太多了,Git的概念是非常清楚的,但是指令无比混乱。将指令重新整理为:
操作当前指针
操作分支
操作版本
操作工作环境
直接重命名为:
git point
不带参数的情况下显示当前指针指哪儿了。
git point <branch>
指到指定的分支
git point ^^
指到上两个版本去。
git branch
不带参数情况下显示目前所有分支情况
git branch add <branch>
新增分支
git branch delete <branch>
删除分支
git version
不带参数情况下显示当前提交版本情况,类似git status
git version add
新增一个版本,等同于git commit。
git version merge [point]
将指定位置的版本与当前版本合并并产生新的版本。
git version list
列出当前分支所有版本
git work
显示当前工作区文件状态。
git work reset
撤销当前工作区所有修改
git cache
显示当前缓冲区状态
git cache add
添加指定文件到缓冲区
git cache clear/reset
清空缓冲区
然后在这一批最基本的指令上面增加脚本指令,完成组合操作等等。这样,所有的指令都可以翻译成一堆基本指令的排列组合。
git目前的问题是,一个指令既是完成一个最基本单元的操作的基本指令,如reset,又是完成一系列组合操作的指令,如reset --hard,又如checkout,再如commit -A或是commit --amend,一个基本的操作,例如移动指针位置,一会儿要用reset,一会儿要用checkout,在当前版本树上往前挪用reset,移到另一个分支又是checkout,一会儿有副作用,一会儿没有副作用……
老实讲,我觉得Git和JavaScript一样,并不是深思熟虑想明白了才动手的干出来的东西,本来就是临时先做一个赶紧用着的东西,迟早是要打一堆补丁的。目前只是真的没几个好用的矮子里面拔高个加上开源社区鼓噪罢了。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有