TOC

为什么 Git 这么不好用?

看了一篇文章 What makes Git so hard to use? 在吐槽 Git 难用。

看完之后发现是软广,作者是想推荐自己公司的产品 HighFlux。我看了一下,似乎是通过封装和自动化来达到简化操作的目的。

我用 Git 几年了,不敢说熟练掌握,但是绝对可以说足以应付工作中的所有场景。

我逐条分析一下作者的观点:

Git commands are too many, too low-level and hard to understand.

作者认为,Git 有 157 个命令,让人觉得自己永远是初学者。

我的观点:只需要掌握常用的一些命令就够了,不需要了解那些底层命令。
底层命令是为其他的场景创造更多可能性。

但是确实可以改进一下:大部分人只需要关心十个左右的上层命令就行了,所以可以在产品上提供一些区分,比如分成 git-core / git-full。
好像也没啥意义,算了。

Git tracks 4 versions of files, instead of just "my" version and "the team's" version.

Git 管理文件的四种状态:除了本地版本,远程版本之外,还要学习 stash 和 index(staging area)。

我更加不敢苟同了,这应该正是 Git 强大的地方啊。

Stash 你不喜欢不用就是了。
Index 去掉似乎是可以少一个步骤,直接提交到本地仓库,对于非专业的人来说,减少一点点心智消耗。

sequenceDiagram
    WorkingDirectory ->> Index(StagingArea) : add
    Index(StagingArea) ->> LocalRepo : commit
    LocalRepo ->> RemoteRepo : push
    WorkingDirectory ->> + StashArea : stash
    StashArea ->> - WorkingDirectory : stash pop

Git doesn't let us safely experiment

作者说了三个功能的缺失:

  1. undo,就是所有操作的一个回退
  2. dryrun
  3. 丢失本地更新的操作,比如 git reset --hard 应该加一个确认

好像有点道理,对于非专业的人来说,这样是会友好些。
但是非专业的人是不是一般都用 GUI,这个事情 GUI 来做似乎完全没有问题啊!

我很少用 GUI 来执行什么操作(只使用 gitg 查看历史),所以对 Git GUI 生态不太了解。

这个意思是不是说 Git 缺少一个好用的 GUI?