msg7086
2022 年 11 月 30 日
拿我自己做的项目举个例子好了。我是做开源软件二次开发的,mod 的代码基于官方版迭代。官方版软件从 2.0 2.1 2.2...一路做到 3.3 3.4 3.5 等等,然后我自己的修改版也要跟着维护 2.0+x 2.1+x 一直到 3.5+x 等等。每个版本一条分支,每次官方更新的时候就要做一次 rebase ,然后根据官方版的不兼容修改去改自己的修改版,所以会非常频繁地做 interactive rebase 。有时候版本升级了出现功能问题,还要做 bisect 去查是官方哪个 commit 和我的修改部分出了冲突。
然后除了跟着官方升级以外,我自己修改的功能也要经常进行迭代,迭代完了还要 backport 到过去的版本。
那么多喜欢用命令行的兄弟们,别的我不多说,你们愿意浪费多少生命去用命令行解决所有的这些操作?
或许有人说,命令行功能强大,只要写脚本去实现常用的操作不就行了吗?
那我只能说,恭喜你重新发明了一些 GUI 工具。强大的 GUI 恰恰就是把 Git 命令行的功能做成了更方便的工具而已。上面说的 SmartGit ,做 rebase ,本质上也是调用 Git 命令行,set author/commit user/time ,然后修改文件,stage ,然后 commit 到树上,然后再修改下一个 commit 的文件,再 commit 到树上,这样一个你自己做要花掉几十分钟时间手动修改的操作,在几秒钟里帮你做完了罢了。
或许有人说,Git 命令行也可以做 interactive rebase 啊。确实,interactive rebase 其实也就是一个 stage+commit 的“GUI”罢了。Git 会调用 vim 或者 emacs ,然后你去选择怎么操作每个 commit 。
但是很多人可能忘了,vim 或者 emacs ,其实也算是一个“GUI”,或者说,CUI 。
喜欢命令行强大的朋友,会天天去用 sed 改文件吗?我觉得大多数人用的都是 vim 之类的图形化工具。有菜单( emacs )或者状态栏,屏幕上有直观的文字,有光标,边看边操作,甚至还可以用上鼠标。
都说生产力工具要用最好的,要买值得买的工具。很多人花大钱买了 mac 电脑,或者买了 JB 全家桶,硬件软件都要挑最好的用。到了 Git ,「 GUI 都是智商税」?代码仓库真的不值得你花一点点时间精力金钱去弄得好一点?有多少兄弟做开源软件或者自己的业余项目,可以抬头挺胸给大家秀出高质量的提交历史。
又或者都是 git add . && git commit -m fix && git push ?