(一)程序员应该选择cli还是gui?

这一节主要讲cli和gui的的优劣和我本人的观点。如果说,你对git的基本命令还不太熟悉的话,可以略过这一节,学过后面的几节之后再来回头看着一节。
  Git从一开始就是命令行工具,后来才衍生出多个图形界面工具,Git命令行是经得起历史考验的,而Git图形界面工具还在被考验、还在打磨。

一、Gui

gui基于命令行开发,界内有不同的软件,Tortoist、gitg、SourceTree、Github Desktop等,用的比较多的貌似是sourceTree。gui对于观察分支合并情况反正会非常直观,这些图形界面都会把diff通过颜色标出来。但是这种多样性本身存在问题,它们都不能达到“在任何场景下方便操作”的程度。但不论是哪个客户端,想执行一些稍微高级点的操作都要点开层层菜单才能找到相应的按钮,更不用说这些客户端视图布局不一致,你根本不知道功能藏在哪。

在分支错综复杂的情况下,再比如出现冲突,gui用来解决冲突、观察分支和分支合并关系是十分直观的。如下图所示,如果分支提交出现如下图1.1所示的合并,终端本身显示能力有限,请问,命令行你看得想不想死?

图1.1 分支乱入图
图1.2 命令行显示分支提交图
图1.3 图形界面分支提交图

通过图1.2和图1.3所示,gui的展示效果非常明显,颜色区分也是非常好看直观。

好处说完了, 缺点还是有滴,
(1)一些简单的命令操作不够简洁,有的命令菜单隐藏的很深,找找找找不一定能找得到,往往是降低程序员效率的一个点。
(2)locale问题,有英文翻译过来的,例如rebase翻译中文是变基是什么鬼?
(3)gui无法操作自动化脚本,比如一次 release中 ,我们可以要涉及到 build, test, bump , git add git commit, git tag, git push , npm publish. 等等独立命令的有序组合。

二、Cli

git起源于命令行,命令行赋予了太多有用的功能,对于复杂的操作还是得需要命令行来完成。代码提交、合并、rebase等操作还是非常快的(非键盘侠除外,赶紧练练打字吧,那打字速度怎么在各大论坛喷技术?)。

对于命令行,git已经做得仁至义尽了,比如一个被修改文件,终端键入git status,它会提示你一些你可能会使用的命令,这是Gui不会告诉你的。

图1.3 git status 提示

命令行玩的熟练的话,玩起git黑科技还是非常愉悦的。

三、建议

个人认为,一些常用的命令,如commit ,branch,checkout等最好通过cli来完成,因为快嘛。出现冲突、查看分支相关的信息,可以通过Gui来协助完成。怎么方便怎么来嘛,工具只是辅助的一种,了解相关的git机制,才能更好地协助你学习开发。

推荐阅读更多精彩内容