既然git这么好用,为什么没有一个官方好用的的可视化工具呢?

关注者
189
被浏览
333,152

63 个回答

我认为Git是一款神器的工具,针对Git使用者,可以泾渭分明的划分成两种类别:

  • 似懂非懂的
  • 真正熟练的

我认为绝大多数都属于前者,尽管很多同学可能心里不服,但是这就是事实。

有多少人真正从头至尾了解过Git的原理?在开发中如果遇到复杂的Git使用问题,是否可以不借助百度谷歌的情况下解决问题?

在开发中,绝大多数使用Git的场景都是比较简单的,拉取、提交、合并....所以,对于很多同学可能开发者一两年也没有用到过Git的复杂使用场景,自然在内心中觉得Git没什么难的。

针对Git可视化工具,估计有不少同学会心想,Git这么简单,还用得着可视化工具?

这个回答是肯定的。

就像前面所说的,很多人在Git过程中并不是真正清楚背后发生了什么?执行一条命令之后会有什么样的效果?

这一点Git的确做的不太好,所以,最近Meta(原Facebook)就开源了一款新的版本控制工具,就特意在用户体验和可视化方面就做了很多努力,这一点也是Git需要像Meta借鉴和学习的,感兴趣的可以阅读我的另一篇内容了解一下:

话说回来,开源社区是非常庞大而且强大的,虽然Git本身不具备可视化功能,对于希望理解Git的同学有很大长大。但是,有一些开源工具却弥补了这个缺憾。

这款开源工具的名字叫 LearnGitBranching ,目前在Github已经 26k+ Star,它或许不是最好的,但是在我看来它非常特别,而且对于理解Git命令有很大的帮助。

简单概括,LearnGitBranching是一款Git的可视化学习工具,它通过交互式的方式教授大家学习Git,并且提供一些列的挑战,能通过可视化及挑战帮助大家理解Git操作和命令。

学习者可以在交互页面输入各种命令,页面会动态的根据输入命令,以动画的方式展示输入命令之后的效果,下面可以看一个示例:

通过这种交互式的方式,可以帮助开发人员更加直观的理解每种操作对应的效果,对于加深对Git命令的理解很有帮助。

除了可视化、交互式的方式,它还提供了一些其他功能。

沙盒模式

默认情况下,应用程序以“沙盒模式”启动,并已创建基本存储库。在这里您可以输入命令并随心所欲地处理存储库。

你可以在沙盒里做如下操作:

  • undo:撤消上一条命令的效果
  • reset:从头开始
  • git clone:模拟远程仓库

关卡

输入levels可以查看可用的课程/挑战,关卡里提供了从基础到高级、技术、技巧不同等级的教程和挑战,对于加深理解很有帮助。

除此之外,LearnGitBranching有一项git golf功能,它会跟踪解决每个调账使用了多少命令,可以更加直观的看到自己对Git的掌握程度。

关卡生成器

如果觉得默认提供的关卡不够,还可以使用 build level 命令构建关卡。

它会提供一个对话框将引导完成每个过程,我们可以提交这些关卡,也可以分享给其他同学。

传送门

Github地址

程序员宝藏库 Jackpop/CS-Books-Store




建议大家有空可以多浏览Github,有很多好用的开源免费工具。但是,目前Github上项目多如牛毛,而且刷榜现在也非常严重,想要找到优质的项目变得越来越难。这里,给大家推荐Github上一个非常不错的项目《 DevWeekly 》,这个项目每周都会精挑细选一些优质的开源项目,涵盖C++、JAVA、JavaScript、Python、Go等不同编程语言。此外,还有一些开源工具、优秀的技术文章:

因为它如果真正好用的话,就不需要额外工具。

对于命令行用户,最需要的是它的命令行靠谱,而git在这方便其实跟hg与svn并没有什么本质不同。学习成本其实并不高(话说svn到hg的迁移成本其实相对低一些,git某些命令的定义跟svn/hg有点点不同,不过总的来说并不难适应)。

对于IDE用户,只要有git插件就行,为什么会需要一个额外的工具呢?

如果题主真的需要工具,拜托至少装个 vscode 或者 jb 全家桶用用,git 插件都可以用的。

git这玩意真没必要再搞额外的可视化工具,因为不支持git插件的编辑器甚至都不能算是个合格的程序员编辑器。既然大家都有,那它自己还做个独立的干嘛?


那么来说说git实际上好在哪?设计git是为了啥?

作者说过,git的设计的核心要素就两个字:性能。git是为大型软件仓库,在广域网上协作开发而设计的。

所以,对于仓库文件数量很大,容量极大,并且需要经常在广域网上协作开发,git被设计为在这些极端情况下具备更好的性能。而这就是Linux开发所需要的东西。git的好,就在于它对于大型软件仓库在速度不够快的公网上进行开发,还可以具备足够优秀的性能。